gpt4 book ai didi

swift - 为什么在 Swift Playground 中执行的结果与在应用程序中执行的结果不同?

转载 作者:行者123 更新时间:2023-11-28 07:17:54 25 4
gpt4 key购买 nike

我在 Playground 中有以下代码:

import Cocoa

let date = NSDate()
let calendar = NSCalendar( calendarIdentifier:NSGregorianCalendar )
let components = calendar.components( NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate: date )

let dateStrippedOfTimeComponent:NSDate = calendar.dateFromComponents(components)

Playgrounds 中的结果是 5 Jul 2014 00:00 这就是我想要的

但是,相同的代码在我的 viewController 中作为 func 的一部分使用时会给出结果 04 Jul 2014 23:00 并且当前的 NSDate() 结果比显示我的 mac 早一个小时出现。有人可以告诉我如何解决这个问题吗?非常感谢,谢谢。

最佳答案

这只是一个显示问题。这两个日期对象完全相同,但 playground 和应用程序在打印结果时使用两个不同的时区。

NSDate 是时间瞬间的纯粹表示。

当您需要显示它时,您可以决定格式、区域设置、时区和其他与可视化相关的信息。例如,您可以在 Playground 上运行:

let date = NSDate()
// "Jul 6, 2014, 11:43 AM" in my system timezone (Italy)

let calendar = NSCalendar( calendarIdentifier:NSGregorianCalendar )
let components = calendar.components( NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate: date )
let dateStrippedOfTimeComponent = calendar.dateFromComponents(components)

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeStyle = NSDateFormatterStyle.MediumStyle

dateFormatter.timeZone = NSTimeZone(abbreviation: "EST")
let estDate = dateFormatter.stringFromDate(dateStrippedOfTimeComponent)
// "Jul 5, 2014, 6:00:00 PM" in NYC

dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
let utcDate = dateFormatter.stringFromDate(dateStrippedOfTimeComponent)
// "Jul 5, 2014, 10:00:00 PM" in London

关于swift - 为什么在 Swift Playground 中执行的结果与在应用程序中执行的结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24591093/

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