Я пытаюсь объединить два целочисленных значения (текущий час и текущую минуту). Например:Объединить два int в swift
int1: 18
int2: 2
Тогда я хочу, чтобы они были один INT: 182
. я получаю текущий час и текущую минуту с этим кодом:
// get the current date and time
let currentDateTime = Date()
// get the user's calendar
let userCalendar = Calendar.current
// choose which date and time components are needed
let requestedComponents: Set<Calendar.Component> = [
.year,
.month,
.day,
.hour,
.minute,
.second
]
// get the components
let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDateTime)
// now the components are available
let dtHour = dateTimeComponents.hour
let dtMinute = dateTimeComponents.minute
Тогда я думал, что я мог бы Concat эти два целых числа, когда я преобразовал их в строку и чем обратно междунар так, что у меня есть большое значение INT , Я сделал это со следующими строками:
let strHour = String(describing: dtHour)
let strMinute = String(describing: dtMinute)
var currenttime : String = strHour
currenttime += strMinute
//reconvert to int
let ct: Int? = Int(currenttime)
print("currentTime as Int : ", ct)
print("currenttime as String: ", currenttime)
Выход первого отпечатка:
CURRENTTIME в Int: ноль
И выход второго отпечатка:
CurrentTime как строка: Необязательно (18) Дополнительное (2)
Да, я знаю, что мне нужно исправить проблему с помощью минут, если текущая минута меньше десяти, и мне сначала нужно вставить нуль, но я не понимаю, почему я не могу преобразовать строку обратно в int, так что это большая строка.
Итак, есть ли правильный способ объединить два целых числа, а затем переконвертировать их обратно к одному большому значению int?
Все свойства 'DateComponents' являются * optionals, * сравните http://stackoverflow.com/questions/40362516/option-value-are -на-получение назначенного к ан-переменной правильно. –
Примечание: Использование 'String (description:)' часто является неправильным решением. Это заставляет ваш код компилироваться, но результат не тот, который вы действительно хотите. –
И, конечно, вам не нужно преобразовывать строки: 'let ct = dateTimeComponents.hour! * 100 + dateTimeComponents.minute! ' –