【发布时间】:2023-04-05 04:04:02
【问题描述】:
似乎setDefaultTimeZone 方法在NSTimeZone 中不再可用。有人知道这个的替代品吗?
在我的AppDelegate.swift 中,我有:
NSTimeZone.default = TimeZone(abbreviation: "BST")!
我猜它按预期工作,因为在所有其他文件中,我将 NSTimeZone 设置为此值
现在,在我的 Utils 中,我有这个方法:
static func getDate(_ dateStr: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
// dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
let date = dateFormatter.date(from: dateStr)!
return date
}
所以,可以说,我给它输入2016-10-07,它给我回2016-10-06 23:00。为什么?如果您取消注释上述代码中的行,它会得到修复。我不想到处使用这条线。
例如,在我项目的其他部分,我使用了CVCalendar。它提供了一个像这样获取convertDate的函数
func didSelectDayView(_ dayView: DayView, animationDidFinish: Bool) {
selectedDay = dayView
selectedDate = dayView.date.convertedDate()!
}
这里也发生了和以前一样的事情……我点击2016-10-08,这里的selectedDate变成2016-10-07 23:00。
NSTimeZone.Default 会在任何地方打印Europe/London。
有人知道为什么会这样吗?
【问题讨论】:
-
你能展示你尝试过的代码吗
-
@Anbu.Karthik 这是我在 Swift3 之前在 AppDelegate.swift 中使用的。 NSTimeZone.setDefaultTimeZone(TimeZone(缩写: "BST")!)
-
@HimanshuMoradiya 我也阅读了这个文档,但是我的 Xcode 失败说 Type NSTimeZone has no member setDefault...。你试过了吗?
-
var UTC = NSTimeZone(name: "UTC") NSTimeZone.defaultTimeZone = UTC 试试这个
标签: ios swift3 nstimezone