xcode swift am/pm时间为24小时格式

use*_*772 56 time swift

我想将am/pm格式时间转换为24小时格式时间

6:35 PM to 18:35
Run Code Online (Sandbox Code Playgroud)

我在操场上尝试了这段代码,但如果我把时间单独放在上面似乎没有用

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

有谁知道如何做到这一点?

谢谢.

Ian*_*Ian 127

只需使用NSDateFormatter和"h:mm a"格式将其转换为日期,然后使用"HH:mm"格式将其转换回字符串.查看此日期格式指南以熟悉此材料.

在此输入图像描述

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!)
Run Code Online (Sandbox Code Playgroud)

  • 尝试在dateFormatter声明后添加以下行.dateFormatter.locale = NSLocale(localeIdentifier:"en_US_POSIX")作为Locale!这解决了我的问题. (8认同)
  • 如果设备时间为24小时格式,则此代码为nil.有什么建议? (6认同)
  • @Tejinder @ Nipul Daki 我给出了区域设置标识符,问题解决了!formatter.locale = Locale(标识符: "en_US_POSIX") (2认同)

Azh*_*ikh 47

斯威夫特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)
Run Code Online (Sandbox Code Playgroud)

输出将是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)
Run Code Online (Sandbox Code Playgroud)

输出将是24小时格式化日期:13:15

  • 当从24小时格式更改为12小时格式时,我需要添加dateFormatter.locale = Locale(标识符:"en_US_POSIX")以强制它忽略设备区域设置. (6认同)
  • 您可以尝试将设备设置为 24 小时制。上面的代码在我的情况下不起作用。 (2认同)

big*_*ble 8

这是带有更多额外格式的答案。

** Xcode 12、Swift 5.3 **

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
var dateFromStr = dateFormatter.date(from: "12:16:45")!

dateFormatter.dateFormat = "hh:mm:ss a 'on' MMMM dd, yyyy"
//Output: 12:16:45 PM on January 01, 2000

dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
//Output: Sat, 1 Jan 2000 12:16:45 +0600

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
//Output: 2000-01-01T12:16:45+0600

dateFormatter.dateFormat = "EEEE, MMM d, yyyy"
//Output: Saturday, Jan 1, 2000

dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
//Output: 01-01-2000 12:16

dateFormatter.dateFormat = "MMM d, h:mm a"
//Output: Jan 1, 12:16 PM

dateFormatter.dateFormat = "HH:mm:ss.SSS"
//Output: 12:16:45.000

dateFormatter.dateFormat = "MMM d, yyyy"
//Output: Jan 1, 2000

dateFormatter.dateFormat = "MM/dd/yyyy"
//Output: 01/01/2000

dateFormatter.dateFormat = "hh:mm:ss a"
//Output: 12:16:45 PM

dateFormatter.dateFormat = "MMMM yyyy"
//Output: January 2000

dateFormatter.dateFormat = "dd.MM.yy"
//Output: 01.01.00

//Output: Customisable AP/PM symbols
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "Pm"
dateFormatter.dateFormat = "a"
//Output: Pm

// Usage
var timeFromDate = dateFormatter.string(from: dateFromStr)
print(timeFromDate)
Run Code Online (Sandbox Code Playgroud)


use*_*088 5

以下是该解决方案的Swift 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)
Run Code Online (Sandbox Code Playgroud)


Anu*_*hra 5

斯威夫特3 *

12小时(即AM和PM)转换为24小时格式的代码,其中包括-

小时:分钟:秒:AM / PM到小时:分钟:秒

func timeConversion24(time12: String) -> String {
    let dateAsString = time12
    let df = DateFormatter()
    df.dateFormat = "hh:mm:ssa"

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

    let time24 = df.string(from: date!)
    print(time24)
    return time24
}
Run Code Online (Sandbox Code Playgroud)

输入项

下午07:05:45

输出量

19:05:45

相似地

24小时转换为12小时(即AM和PM)格式的代码,其中包括-

时间:分钟:秒至小时:分钟:秒:AM / PM

func timeConversion12(time24: String) -> String {
    let dateAsString = time24
    let df = DateFormatter()
    df.dateFormat = "HH:mm:ss"

    let date = df.date(from: dateAsString)
    df.dateFormat = "hh:mm:ssa"

    let time12 = df.string(from: date!)
    print(time12)
    return time12
}
Run Code Online (Sandbox Code Playgroud)

输入项

19:05:45

输出量

下午07:05:45