错误的字符串到日期转换swift 3.0

时间:2017-12-06 20:07:04

标签: swift nsdateformatter

我正在将字符串中的10/24 12:00 PM格式转换为日期格式的等效格式。我使用以下代码:

let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM/dd hh:mm aa"

   self.dateCompleted = dateFormatter.date(from: self.DeliverBy!)

dateCompleted是一个Date变量,而self.DeliveryBy是一个String变量。

我得到的输出像2000-10-24 17:00:00 UTC,因为它应该像2017-10-24 12:00:00 UTC。我做错了吗?

我提到http://userguide.icu-project.org/formatparse/datetime

2 个答案:

答案 0 :(得分:2)

您的日期字符串未指定年,因此 根据默认日期确定。您可以做的是设置 默认日期为当天的(开始):

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd hh:mm aa"
dateFormatter.defaultDate = Calendar.current.startOfDay(for: Date())
if let dateCompleted = dateFormatter.date(from: "10/24 12:00 PM") {
    print(dateCompleted) // 2017-10-24 10:00:00 +0000
}

(我在欧洲/柏林时区,因此打印时间中午12点 格林尼治标准时间上午10点。)

答案 1 :(得分:0)

您可以将当前日期信息加载到DateFormatter:

let dateFormatter = DateFormatter()

dateFormatter.dateFormat = "MM/dd hh:mm aa"

dateFormatter.defaultDate = Date() // start with the current date

self.dateCompleted = dateFormatter.date(from: self.DeliverBy!)