我正在尝试将日期字符串解析为Date
类。我为此使用SwiftDate。但是,当我尝试解析它时,它返回的时间比字符串中的值少1天。以下是一些示例:
let birthString = "1996-10-08"
self.birthday = Date(birthString, format: "yyyy-MM-dd", region: Region.current)
//Result: self.birthday = 1996-10-07 17:00:00 UTC
let expiredString = "2019-09-30"
self.membershipExpiredDate = Date(expiredString, format: "yyyy-MM-dd", region: Region.current)
//Result: self.membershipExpiredDate = 2019-09-29 17:00:00 UTC
如何解决此错误?谢谢。
答案 0 :(得分:0)
SwiftDate 使用区域,并且您将区域设置为Region.current
。日期是正确的,您可以使用.timeIntervalSince1970
属性进行检查。发生的情况是,当您打印日期(实际上只是一个TimeInterval,又称Double,一个特定的时间点,与任何日历或时区无关)时,它会打印其description属性,其默认时区为UTC
(您可以在输出17:00:00 UTC
中看到它)。
要使用您当前的语言环境打印日期,请使用this实例方法:
print(date.description(with: Locale.current))