2015-03-28 2 views
25

Я пытаюсь преобразовать время утра/формата вечер до 24 часов времени в форматеXcode быстры утр время/вечера до 24-часового формата

6:35 PM to 18:35 

Я попытался этот кусок кода на детской площадке, но это не кажется работа, если я ставлю в одиночку

let dateAsString = "02/12/15, 6:35 PM" 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "HH" 
let date = dateFormatter.dateFromString(dateAsString) //returns nil 

время кто-нибудь знает, как это сделать?

спасибо.

ответ

72

Просто преобразуйте его в дату, используя NSDateFormatter и формат «h: mm a» и преобразуйте его обратно в строку с использованием формата «HH: mm». Ознакомьтесь с этим date formatting guide, чтобы ознакомиться с этим материалом.

let dateAsString = "6:35 PM" 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "h:mm a" 
let date = dateFormatter.dateFromString(dateAsString) 

dateFormatter.dateFormat = "HH:mm" 
let date24 = dateFormatter.stringFromDate(date!) 
+0

Большое спасибо Ian :) – user3772

+0

Спасибо, lan .. –

+5

Этот код дает ноль, если время устройства в 24-часовом формате. Любой совет? – Tejinder

0

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

Вот мой код ...

func timeUpdate(sender: NSDate) 
{ 
    let timeSave = NSDateFormatter() //Creating first object to update time label as 12hr format with AM/PM 
    timeSave.timeStyle = NSDateFormatterStyle.ShortStyle //Setting the style for the time selection. 
    self.TimeShowOutlet.text = timeSave.stringFromDate(sender) // Getting the string from the selected time and updating the label as 1:40 PM 
    let timeCheck = NSDateFormatter() //Creating another object to store time in 24hr format. 
    timeCheck.dateFormat = "HH:mm:ss" //Setting the format for the time save. 
    let time = timeCheck.stringFromDate(sender) //Getting the time string as 13:40:00 
    self.timeSelectedForCheckAvailability = time //At last saving the 24hr format time for further task. 
} 

После написания этой функции вы можете назвать это, где вы выбираете время от даты/времени подборщика.

Спасибо, Надеюсь, это помогло.

2

Вот код другим способом вокруг

Для Swift 3

func amAppend(str:String) -> String{ 
    var temp = str 
    var strArr = str.characters.split{$0 == ":"}.map(String.init) 
    var hour = Int(strArr[0])! 
    var min = Int(strArr[1])! 
    if(hour > 12){ 
     temp = temp + "PM" 
    } 
    else{ 
     temp = temp + "AM" 
    } 
    return temp 
} 
16

Свифта 3

Формат времени 24 часа до 12 часов

 let dateAsString = "13:15" 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "HH:mm" 

     let date = dateFormatter.date(from: dateAsString) 
     dateFormatter.dateFormat = "h:mm a" 
     let Date12 = dateFormatter.string(from: date!) 
     print("12 hour formatted Date:",Date12) 

выход будет 12 час отформатирован Дата: 1:15 вечера

Формат времени 12 часов до 24 часов

 let dateAsString = "1:15 PM" 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "h:mm a" 

     let date = dateFormatter.date(from: dateAsString) 
     dateFormatter.dateFormat = "HH:mm" 

     let Date24 = dateFormatter.string(from: date!) 
     print("24 hour formatted Date:",Date24) 

выход будет 24 часа отформатированный Дата: 13:15

2

Ниже это быстрые 3 вариант решения -

let dateAsString = "6:35:58 PM" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "h:mm:ss a" 
let date = dateFormatter.date(from: dateAsString) 

dateFormatter.dateFormat = "HH:mm:ss" 
let date24 = dateFormatter.string(from: date!) 
print(date24) 
0

Swift версия 3.0.2, Xcode версии 8.2.1 (8C1002) (12 формат час):

func getTodayString() -> String{ 

     let formatter = DateFormatter() 
     formatter.dateFormat = "h:mm:ss a " 
     formatter.amSymbol = "AM" 
     formatter.pmSymbol = "PM" 

     let currentDateStr = formatter.string(from: Date()) 
     print(currentDateStr) 
     return currentDateStr 
} 

ВЫВОД: 12:41:42 AM

Прокоментируй. Спасибо

+0

Этот вопрос касается перехода от 12 часов до 24 часов, этот ответ касается перехода в другом направлении. – Abizern

+0

Неправильный ответ !! Вы сбиты с толку, потому что вы тестируете 12:41:42. Попробуйте 1pm или больше. – TheTiger

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