timeIntervalSince1970 转换 returns 错误年份 Swift 3
timeIntervalSince1970 conversion returns the wrong year in Swift 3
我遇到了 timeIntervalSince1970
return 年份错误的问题。
这是我的代码
func unixToDateString(timeStamp: TimeInterval) -> String {
let date = Date(timeIntervalSince1970: timeStamp)
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier:Locale.current.identifier)
dateFormatter.dateFormat = "MM/dd/YYYY"
return dateFormatter.string(from: date)
}
这些是我的结果
unixToDateString(timeStamp: 1505896961.0)
returns
09/20/2017
哪个是正确的
但是,
unixToDateString(timeStamp: 1546214400.0)
unixToDateString(timeStamp: 4133894400.0)
returns
12/31/2019
12/31/2101
根据 Epoch Unix Time Stamp Converter
他们都 return 额外一年
1546214400.0 = 12/31/2018
4133894400.0 = 12/31/2100
有没有人有同样的情况?
问题是日期格式使用 "Year (of "一年中的第几周")" (YYYY
) 但您期望的结果是 "Calendar Year" (yyyy
) .
将日期格式更改为 "MM/dd/yyyy"
后,我看到了您期望的结果(2018 年和 2100 年)。
您可以在 Unicode Standard Date Field Symbol Table 中看到 Y
和 y
。在他们的示例中,"Week of Year" 年(1997 年)也比日历年(1996 年)多一年。
Data Formatting Guide也提出了同样的问题,并指出通常应该使用日历日期(yyyy
):
A common mistake is to use YYYY
. yyyy
specifies the calendar year whereas YYYY
specifies the year (of “Week of Year”), used in the ISO year-week calendar. In most cases, yyyy
and YYYY
yield the same number, however they may be different. Typically you should use the calendar year.
您使用 YYYY 而不是 yyyy。
查看此页面了解详细信息。 ^^
Difference between 'YYYY' and 'yyyy' in NSDateFormatter
我遇到了 timeIntervalSince1970
return 年份错误的问题。
这是我的代码
func unixToDateString(timeStamp: TimeInterval) -> String {
let date = Date(timeIntervalSince1970: timeStamp)
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier:Locale.current.identifier)
dateFormatter.dateFormat = "MM/dd/YYYY"
return dateFormatter.string(from: date)
}
这些是我的结果
unixToDateString(timeStamp: 1505896961.0)
returns
09/20/2017
哪个是正确的
但是,
unixToDateString(timeStamp: 1546214400.0)
unixToDateString(timeStamp: 4133894400.0)
returns
12/31/2019
12/31/2101
根据 Epoch Unix Time Stamp Converter
他们都 return 额外一年1546214400.0 = 12/31/2018
4133894400.0 = 12/31/2100
有没有人有同样的情况?
问题是日期格式使用 "Year (of "一年中的第几周")" (YYYY
) 但您期望的结果是 "Calendar Year" (yyyy
) .
将日期格式更改为 "MM/dd/yyyy"
后,我看到了您期望的结果(2018 年和 2100 年)。
您可以在 Unicode Standard Date Field Symbol Table 中看到 Y
和 y
。在他们的示例中,"Week of Year" 年(1997 年)也比日历年(1996 年)多一年。
Data Formatting Guide也提出了同样的问题,并指出通常应该使用日历日期(yyyy
):
A common mistake is to use
YYYY
.yyyy
specifies the calendar year whereasYYYY
specifies the year (of “Week of Year”), used in the ISO year-week calendar. In most cases,yyyy
andYYYY
yield the same number, however they may be different. Typically you should use the calendar year.
您使用 YYYY 而不是 yyyy。 查看此页面了解详细信息。 ^^
Difference between 'YYYY' and 'yyyy' in NSDateFormatter