2015-03-28 26 views
25

Tôi cố gắng để chuyển đổi một thời gian sáng/chiều định dạng để một thời gian định dạng 24 giờxcode nhanh chóng sáng/chiều thời gian để định dạng 24 giờ

6:35 PM to 18:35 

tôi đã cố gắng đoạn mã này trên sân chơi nhưng nó không có vẻ hoạt động nếu tôi đặt thời gian một mình

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

Có ai biết cách thực hiện điều này không?

Cảm ơn bạn.

Trả lời

72

Chỉ cần chuyển đổi nó thành ngày bằng cách sử dụng NSDateFormatter và định dạng "h: mm a" và chuyển đổi nó trở lại thành chuỗi bằng định dạng "HH: mm". Hãy xem số date formatting guide này để tự làm quen với tài liệu này.

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

Cảm ơn rất nhiều Ian :) – user3772

+0

Cảm ơn bạn lan .. –

+5

Mã này cung cấp cho nil nếu thời gian thiết bị ở định dạng 24 giờ. Lời khuyên nào? – Tejinder

0

Tôi đang sử dụng một hàm đây trong trường hợp của tôi bằng cách mà tôi đang cập nhật một nhãn với định dạng thời gian bình thường và sau đó tôi đang lưu trữ định dạng 24 giờ thời gian được lựa chọn để thực hiện một số nhiệm vụ khác ..

Đây là mã của tôi ...

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. 
} 

Sau khi viết chức năng này, bạn có thể gọi nơi bạn đang chọn thời gian từ bộ chọn ngày/giờ.

Cảm ơn, Hy vọng điều này sẽ hữu ích.

2

Dưới đây là mã cho cách khác xung quanh

Đối 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

Swift 3

định dạng Thời gian 24 giờ đến 12 giờ

 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) 

đầu ra sẽ là 12 giờ ngày định dạng: 13:15

Thời gian định dạng 12 giờ đến 24 giờ

 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) 

đầu ra sẽ là 24 giờ định dạng ngày: 13:15

2

Dưới là phiên bản 3 giải pháp nhanh chóng -

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 phiên bản 3.0.2, Xcode Version 8.2.1 (8C1002) (12 định dạng hr):

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 
} 

OUTPUT: 00:41:42

Hãy thoải mái bình luận. Cảm ơn

+0

Câu hỏi này là về thời gian từ 12 giờ đến 24 giờ, câu trả lời này đề cập đến theo một hướng khác. – Abizern

+0

Câu trả lời không chính xác !! Bạn đang bối rối bởi vì bạn đang thử nghiệm với 12:41:42. Thử từ 1 giờ chiều trở lên. – TheTiger

Các vấn đề liên quan