iOS获取UTC时间戳

时间:2014-02-27 13:53:56

标签: ios objective-c swift date timestamp

我想获得UTC时间戳。我不能这样做[[NSDate date] timeIntervalSince1970];因为它在本地时区返回时间戳。如何在iOS中获取UTC时间戳?

修改

解决了我可以使用[[NSDate date] timeIntervalSince1970];:)

3 个答案:

答案 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