我想获得UTC时间戳。我不能这样做[[NSDate date] timeIntervalSince1970];
因为它在本地时区返回时间戳。如何在iOS中获取UTC时间戳?
解决了我可以使用[[NSDate date] timeIntervalSince1970];
:)
答案 0 :(得分:11)
请参阅Pawel的回答:Get current date in milliseconds
他指的是使用CFAbsoluteTimeGetCurrent();
记录在案here。
由于是系统时间,只需更正GMT的时间间隔偏移。
然而,如果您更正当地时区,则使用您的代码也可以。
通过调用
获得时区偏移量[[NSTimeZone systemTimeZone] secondsFromGMT];
或
[[NSTimeZone systemTimeZone] secondsFromGMTForDate:[NSDate date]];
答案 1 :(得分:6)
只是timeIntervalSince1970将UTC时间作为double(NSTimeInterval)返回
获得32位表示(可能与嵌入式系统交互):
time_t timestamp = (time_t)[[NSDate date] timeIntervalSince1970];
答案 2 :(得分:2)
快速解决方案
使用timeIntervalSince1970
获取UTC时间戳。
let secondsSince1970: TimeInterval = Date().timeIntervalSince1970
如果要使用时区,请使用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