将字符串快速转换为日期后,日期未显示

时间:2019-03-15 07:17:33

标签: ios swift nsdate nsdateformatter

我有字符串并转换为日期格式,但是当我转换后,日期显示正确但时间显示格式错误

  

firsDateString:2019年3月15日上午9:00
    secondName:2019年3月15日下午8:00

将字符串转换为日期格式

let addedDate = firsDateString
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MMM-dd hh:mm  a"
let date1 = formatter.date(from: addedDate)
print("DATE \(date1)")

此后获取此值:

DATE Optional(2019-03-15 03:30:00 +0000)

如何获取正确的日期格式?

3 个答案:

答案 0 :(得分:0)

检查:

    let addedDate = firsDateString
    let formatter = DateFormatter()
    formatter.timeZone = (NSTimeZone(name: "UTC")! as TimeZone)
    formatter.dateFormat = "yyyy-MMM-dd hh:mm a"
    let date1 = formatter.date(from: addedDate)
    print("DATE \(String(describing: date1!))")

答案 1 :(得分:0)

使用like,但不是有效的答案,可能是它根据您的情况而起作用,但按照option2的要求,它将涵盖所有情况

let formatter = DateFormatter()

formatter.dateFormat =“ yyyy-MMM-dd hh:mm a”

let date1 = formatter.date(来自:“ 2019年3月15日9:00 AM”)

formatter.amSymbol =“”

formatter.pmSymbol =“”

让currentDateStr = formatter.string(from:date1!)

print(“ currentDateStr(currentDateStr)”)

基于@JoakimDanielson点

  

当您不再能分辨早上8点和晚上8点之间的区别时,如何才能接受?

在这里您需要遵循24小时制,我将更新我的答案

选项2

    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MMM-dd hh:mm a"
    let date1 = formatter.date(from: "2019-Mar-15 9:00 AM")
    formatter.dateFormat = "yyyy-MMM-dd HH:mm"
    let currentDateStr = formatter.string(from: date1!)
    print("currentDateStr \(currentDateStr)")

输出

enter image description here

答案 2 :(得分:-1)

在打印之前,您需要将其转换回字符串

let addedDate = "2019-Mar-15 9:00 AM"    
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MMM-dd hh:mm  a"
let date1 = formatter.date(from: addedDate)

if let date = date1 {
    print(formatter.string(from: date))
}

输出

  

2019年3月15日上午09:00

如果要在输出中使用24小时格式,则需要更改格式化程序的格式

let addedDate = "2019-Mar-15 8:00 AM"
let secDate = "2019-Mar-15 9:00 PM"
let formatter = DateFormatter()
formatter.timeZone = TimeZone.init(abbreviation: "")
formatter.dateFormat = "yyyy-MMM-dd hh:mm a"
let date1 = formatter.date(from: addedDate)
let date2 = formatter.date(from: secDate)

formatter.dateFormat = "yyyy-MMM-dd HH:mm"

if let date = date1 {
    print(formatter.string(from: date))
}

if let date = date2 {
    print(formatter.string(from: date))
}

输出

  

2019年3月15日08:00
  2019年3月15日21:00