NSDate() - Playground 与 Swift Xcode

Posted

技术标签:

【中文标题】NSDate() - Playground 与 Swift Xcode【英文标题】:NSDate() - Playground vs. Swift Xcode 【发布时间】:2015-10-13 13:25:53 【问题描述】:

我注意到,当我在 Swift 操场上时,对 NSDate() 的调用会生成具有以下格式的日期:

< date time AM|PM >

然而,在 xcode/app 内部,NSDate() 会生成一个具有这种格式的日期

< date time UTC >

我不清楚为什么会有这样的差异?如何强制 xcode 始终将 NSDate 生成为&lt; date time AM|PM &gt;

【问题讨论】:

【参考方案1】:

NSDate 用于表示一个时间点。它没有任何格式的概念。 你想用来打印NSDate的内容是NSDateFormatter

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle
dateFormatter.timeStyle = NSDateFormatterStyle.MediumStyle
print(dateFormatter.stringFromDate(NSDate()))

【讨论】:

【参考方案2】:

NSDate 本身没有任何时区概念。来自文档

NSDate的唯一原始方法,timeIntervalSinceReferenceDate, 为 NSDate 接口中的所有其他方法提供了基础。 此方法返回相对于绝对参考的时间值 日期 - 2001 年 1 月 1 日 00:00:00 UTC。

在操场上,如果您只写let date = NSDate(),它会自行进行某种日期格式化(这很有趣,但不应该被期望)。如果你print(date)if 会告诉你日期实际包含的内容。

如果您想在应用内格式化日期,您应该考虑使用 NSDateFormatter 类。

【讨论】:

以上是关于NSDate() - Playground 与 Swift Xcode的主要内容,如果未能解决你的问题,请参考以下文章

Hacker‘s Playground(SSTF) 2021 Web

Hacker‘s Playground(SSTF) 2021 Web

[Cypress] Test React’s Controlled Input with Cypress Selector Playground

如何使 NSDate 与关联对象一起工作?

NSDate与 NSString long long类型的相互转化

OC基础--常用类的初步介绍与简单使用之NSDate