不正确的字符串到日期转换 swift 3.0
incorrect string to date conversion swift 3.0
我正在将字符串格式如 10/24 12:00 PM 转换为日期格式的等效格式。我正在使用以下代码:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd hh:mm aa"
self.dateCompleted = dateFormatter.date(from: self.DeliverBy!)
dateCompleted 是日期变量,而 self.DeliveryBy 是字符串变量。
我得到的输出类似于 2000-10-24 17:00:00 UTC,而它应该类似于 2017-10-24 12:00:00 UTC。我做错了什么吗?
您的日期字符串未指定 年份, 因此
根据默认日期确定。您可以做的是设置
默认日期为当天(开始):
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
}
(我在 Europe/Berlin 时区,因此打印 12:00 PM
10:00 GMT。)
您可以将当前日期信息加载到 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!)
我正在将字符串格式如 10/24 12:00 PM 转换为日期格式的等效格式。我正在使用以下代码:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd hh:mm aa"
self.dateCompleted = dateFormatter.date(from: self.DeliverBy!)
dateCompleted 是日期变量,而 self.DeliveryBy 是字符串变量。
我得到的输出类似于 2000-10-24 17:00:00 UTC,而它应该类似于 2017-10-24 12:00:00 UTC。我做错了什么吗?
您的日期字符串未指定 年份, 因此 根据默认日期确定。您可以做的是设置 默认日期为当天(开始):
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
}
(我在 Europe/Berlin 时区,因此打印 12:00 PM 10:00 GMT。)
您可以将当前日期信息加载到 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!)