iOS获取UTC时间戳

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)


Der*_*ike 7

快速解决方案

使用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)


Ang*_*elo 6

只是timeIntervalSince1970将UTC时间作为double返回(NSTimeInterval)

要获得32位表示(可能与嵌入式系统交互):

time_t timestamp = (time_t)[[NSDate date] timeIntervalSince1970];