gpt4 book ai didi

ios - 从 NSDate 对象获取 UTC 时间和本地时间

转载 作者:IT老高 更新时间:2023-10-28 11:29:26 36 4
gpt4 key购买 nike

在 Objective-c 中,以下代码使用 date API 生成 UTC 日期时间信息。

NSDate *currentUTCDate = [NSDate date]

然而,在 Swift 中,

let date = NSDate.date()

结果为本地日期和时间。

我有两个问题:

  1. 如何在 NSDate 对象中获取 UTC 时间和本地时间(以及 date 给出本地时间)。
  2. 如何从 NSDate 对象中获取秒数的精度。

编辑 1:感谢所有输入,但我不是在寻找 NSDateFormatter 对象或字符串值。我只是在寻找 NSDate 对象(但是我们将它们煮熟,但这是要求)。
参见第 1 点。

最佳答案

NSDate 是一个特定的时间点没有时区。将其视为自引用日期以来经过的秒数。自特定引用日期以来,一个时区与另一个时区过去了多少秒? 答案是一样的。

根据您输出该日期的方式(包括查看调试器),您可能会在不同的时区得到答案。

如果它们同时运行,它们的值是相同的。它们都是自引用日期以来的秒数,可以在 输出时 格式化为 UTC 或本地时间。在日期变量中,它们都是 UTC。

objective-C :

NSDate *UTCDate = [NSDate date]

swift :

let UTCDate = NSDate.date()

为了解释这一点,我们可以在 Playground 中使用 NSDateFormatter:

import UIKit

let date = NSDate.date()
// "Jul 23, 2014, 11:01 AM" <-- looks local without seconds. But:

var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
let defaultTimeZoneStr = formatter.stringFromDate(date)
// "2014-07-23 11:01:35 -0700" <-- same date, local, but with seconds
formatter.timeZone = NSTimeZone(abbreviation: "UTC")
let utcTimeZoneStr = formatter.stringFromDate(date)
// "2014-07-23 18:01:41 +0000" <-- same date, now in UTC

日期输出会有所不同,但日期是不变的。这正是你所说的。没有本地 NSDate 这样的东西。

至于如何取出微秒,可以用这个(放在同一个playground的底部):

let seconds = date.timeIntervalSince1970
let microseconds = Int(seconds * 1000) % 1000 // chops off seconds

要比较两个日期,可以使用 date.compare(otherDate)

关于ios - 从 NSDate 对象获取 UTC 时间和本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917483/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com