【问题标题】:Why does print(date object) show a different date than what the value actually is? [duplicate]为什么 print(date object) 显示的日期与实际值不同? [复制]
【发布时间】:2020-12-22 14:19:19
【问题描述】:

我正在 xcode 操场上玩 DateFormatter 以尝试了解日期对象在 swift 中如何工作的基本知识。

当我尝试打印从字符串“050478”(1978 年 4 月 5 日)到日期的字符串到日期转换的结果时,以下代码给出了奇怪的结果。在挪威,我们的社会安全号码以 ddMMyy 开头,所以我想将它转换为日期。

import UIKit

let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "dd/MM/yy"

let myDateString = "05/04/78"

if let myDate = dateFormatterGet.date(from: myDateString)
{
    print(myDate)
}

如您所见,print(myDate) 命令给了我错误的日期,从我作为参数提供给 dateformatter (1978-04-04) 的前一天开始

【问题讨论】:

  • 请参阅dateFormatterGet.date(from: myDateString)!; dateFormatterGet.date(from: myDateString)!.description; print(dateFormatterGet.date(from: myDateString))。这不是一个错误的日期,它是同一个日期,只是有一个时区看不见。

标签: swift


【解决方案1】:

May 5th at 0:00 上挪威的本地时区是 UTC+0100。

但是print() 始终以UTC(+0000) 显示日期,即May 4th at 23:00

替换

print(myDate) 

print(myDate.description(with: .current))

获取本地日期和时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2019-12-12
    • 2021-05-14
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多