2016-11-09 3 views
0

У меня есть проблема, чтобы найти подходящее решение в swift3 для этого:добавить 0 часов/минут до 10

У меня есть дата 10h20m. Когда мои часы будут меньше 10, это будет «5h30». Я хочу выйти из «05h30».

class func getTime(_ user: SUser) -> String { 
    let currentDate = Date() 
    let firstDate = user.firstDate 
    let difference = firstDate?.timeIntervalSince(now) 

    let hours = String(Int(difference!)/3600) 
    let minutes = String(Int(difference!)/60 % 60) 

    let time = "\(hours)h\(minutes)m" 
    return time 
} 

Если у кого-то есть идея, как это просто и правильно благодарить вас!

+0

Рассмотрим 'DateComponentsFormatter' – vadian

ответ

1

Вы можете сделать что-то вроде этого

class func getTime(_ user: SUser) -> String { 
    let currentDate = Date() 
    let firstDate = user.firstDate 
    let difference = firstDate?.timeIntervalSince(now) 

    let hours = String(Int(difference!)/3600) 
    if Int(hours)! < 10 { 
     hours = "0\(hours)" 
    } 
    var minutes = String(Int(difference!)/60 % 60) 
    if Int(minutes)! < 10 { 
     minutes = "0\(minutes)" 
    } 
    let time = "\(hours)h\(minutes)m" 
    return time 
} 

или лучший способ

class func getTime(_ user: SUser) -> String { 
    let currentDate = Date() 
    let firstDate = user.firstDate 
    let difference = firstDate?.timeIntervalSince(now) 

    let hours = Int(difference!)/3600 
    let minutes = Int(difference!)/60 % 60 

    let time = "\(String(format: "%02d", hours))h\(String(format: "%02d", minutes))m" 
    return time 
} 

Похожие здесь - Leading zeros for Int in Swift

0
class func getTime(_ user: SUser) -> String { 
    let currentDate = Date() 
    let firstDate = user.firstDate 
    let difference = firstDate?.timeIntervalSince(now) 

    var hours = String(Int(difference!)/3600) 
    if ((Int(difference!)/3600)<10) { 
     hours = "0\(hours)" 
    } 
    var minutes = String(Int(difference!)/60 % 60) 
    if ((Int(difference!)/60 % 60)<10) { 
     minutes = "0\(minutes)" 
    } 
    let time = "\(hours)h\(minutes)m" 
    return time 
} 
0

Я думаю, вы бы лучше с простого форматирования функцию, которую вы можете вызвать в строке.

Try что-то вроде

func formatHour(hour:Int) -> String { 

    return (String(hour).characters.count == 1) ? "0\(hour)" : "\(hour)" 
} 

let hour = 5 

print("\(formatHour(hour: hour))") // output "05" 

Вы можете настроить это в случае необходимости, может передать строку в вместо этого и сохранить делает преобразование в функции. может также добавить инструкцию охраны для обеспечения того, чтобы число находилось в пределах часов или строка была меньше трех символов и т. д.

Смежные вопросы