AYM*_*ADA 11 timestamp date objective-c ios swift
我想获得UTC时间戳.我不能这样做,因为[[NSDate date] timeIntervalSince1970];
它返回本地时区的时间戳.如何在iOS中获取UTC时间戳?
解决了我可以用[[NSDate date] timeIntervalSince1970];
:)
Vol*_*ker 12
请参阅Pawel的答案:获取当前日期(以毫秒为单位)
他指的是使用 CFAbsoluteTimeGetCurrent();
由于是系统时间,只需更正GMT的时间间隔偏移.
然而,如果您更正当地时区,使用您的代码也可以.
您可以通过调用获得时区偏移量
[[NSTimeZone systemTimeZone] secondsFromGMT];
Run Code Online (Sandbox Code Playgroud)
要么
[[NSTimeZone systemTimeZone] secondsFromGMTForDate:[NSDate date]];
Run Code Online (Sandbox Code Playgroud)
快速解决方案
使用timeIntervalSince1970
获得UTC时间戳。
let secondsSince1970: TimeInterval = Date().timeIntervalSince1970
Run Code Online (Sandbox Code Playgroud)
如果要使用时区,请使用DateFormatter
.
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss z"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
print(dateFormatter.string(from: date))
// output: 2019-01-10 00:24:12 GMT
dateFormatter.timeZone = TimeZone(abbreviation: "America/Los_Angeles")
print(dateFormatter.string(from: date))
// output: 2019-01-09 16:24:12 PST
Run Code Online (Sandbox Code Playgroud)
只是timeIntervalSince1970将UTC时间作为double返回(NSTimeInterval)
要获得32位表示(可能与嵌入式系统交互):
time_t timestamp = (time_t)[[NSDate date] timeIntervalSince1970];
归档时间: |
|
查看次数: |
14718 次 |
最近记录: |