NSDate() - Playground vs. Swift Xcode

gog*_*elj 3 xcode swift swift2

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

< date time AM|PM >
Run Code Online (Sandbox Code Playgroud)

但是,在xcode/app中,NSDate()会使用此格式生成日期

< date time UTC >
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*cio 6

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

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle
dateFormatter.timeStyle = NSDateFormatterStyle.MediumStyle
print(dateFormatter.stringFromDate(NSDate()))
Run Code Online (Sandbox Code Playgroud)


Pet*_*oti 5

NSDate对于时区本身没有任何概念.来自文档

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

在操场上如果你只是自己写let date = NSDate()一些日期格式(这很有趣,但不应该是预期的).如果您print(date)将显示实际包含的日期.

在此输入图像描述

如果您想格式化应用程序内的日期,您应该查看使用NSDateFormatter该类.