Swift 3 Playground 以本地格式记录日期。如何?
Posted
技术标签:
【中文标题】Swift 3 Playground 以本地格式记录日期。如何?【英文标题】:Swift 3 playground logs dates in local format. How? 【发布时间】:2016-09-27 00:22:54 【问题描述】:如果您在美国的 Playground 中运行这样的线路:
let today = Date()
您将在源代码右侧看到如下输出:
"Sep 26, 2016, 8:17 PM"
这似乎是日期,以当地时区显示,使用中等日期和时间样式。
它是如何工作的?
如果您尝试打印日期:
print("today = \(today)"
您会看到“Today = 2016-09-27 00:18:55 +0000\n”,这是 UTC,并且似乎是 unix 日期格式。
当您第一次创建日期时,Playground 使用什么函数来显示日期?有没有办法从代码或调试控制台获取该输出格式?
到目前为止,我已经创建了一个日期格式化程序,用于记录日期、在控制台中显示日期等。
【问题讨论】:
您可以继承并覆盖与CustomPlaygroundQuicklookable的一致性 这不是我要问的。我希望能够在代码中使用print(aDate)
,或在调试器控制台中使用e aDate
,并在我当前的时区和语言环境中获取中等格式的日期。
我已经为 Date 创建了一个扩展,可以让我说 print(aDate.localDateString),但显然,在用户的语言环境中以中等格式显示日期的能力潜伏在某个地方。也许它只是在操场上?
【参考方案1】:
它潜伏在CustomPlaygroundQuickLookable
协议中,Date
符合:
if case .text(let str) = today.customPlaygroundQuickLook
print(str)
【讨论】:
呃。我希望日期的正常描述方法能够登录本地时区和语言环境,并可以选择以 UTC 显示。 我在 SO 上看到的大多数 Date 问题都与时区有关。我希望苹果也做出改变 希望能够在本地时区记录日期是很常见的。更常见的是想在 UTC 中看到它,我敢打赌。不幸的是,以易于阅读的格式记录日期需要隐藏的 Playground 协议。 那个。并且下标 String 需要 Index 而不是 Int。 Swift 团队有时候就这么固执 我理解的下标字符串。 Unicode 字符串是奇怪的野兽,需要可变数量的数据来表达,并且有多种方式来表示同一组字形。我希望他们能提供一个“普通”映射,将每个字形强制转换为 32 位 int,然后允许将其视为纯 unicode 字符数组。以上是关于Swift 3 Playground 以本地格式记录日期。如何?的主要内容,如果未能解决你的问题,请参考以下文章
如何将本地 HTML 文件导入到我的 Swift Playground Live View?
NSDate() - Playground 与 Swift Xcode
在 Playground 的“SupportCode.swift”中导入第 3 方框架
解析 JSON 数据时出错(Swift 4 Playground)