Amr*_*taB 13 nstimezone ios swift3
似乎setDefaultTimeZone方法已不再可用NSTimeZone.有人知道替代品吗?
添加一些细节:在我的appDelegate.swift中,我有
NSTimeZone.default = TimeZone(abbreviation: "BST")!
Run Code Online (Sandbox Code Playgroud)
它的工作原理我猜是因为在所有其他文件中,我将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
}
Run Code Online (Sandbox Code Playgroud)
所以,让我们说,我给它输入"2016-10-07",它给了我2016-10-06 23:00.为什么?如果取消注释上面代码中的行,它将得到修复.我不想到处都用这条线.
例如,在我的项目的其他部分,我使用了CVCalendar(https://github.com/Mozharovsky/CVCalendar).它提供了一个像这样获得convertedDate的函数
func didSelectDayView(_ dayView: DayView, animationDidFinish: Bool) {
selectedDay = dayView
selectedDate = dayView.date.convertedDate()!
}
Run Code Online (Sandbox Code Playgroud)
和以前一样的事情也发生在这里......那就是我点击2016-10-08,它在这里选择日期变成2016-10-07 23:00.
NSTimeZone.Default随处可见欧洲/伦敦.
有谁知道为什么会这样?
Nir*_*v D 13
试试这样吧.
TimeZone.ReferenceType.default = TimeZone(abbreviation: "BST")!
Run Code Online (Sandbox Code Playgroud)
编辑:我已经使用这个TimeZone与DateFormatter和得到正确的BST时间和日期.
TimeZone.ReferenceType.default = TimeZone(abbreviation: "BST")!
let formatter = DateFormatter()
formatter.timeZone = TimeZone.ReferenceType.default
formatter.dateFormat = "yyyy-MM-dd HH:mm"
let strDate = formatter.string(from: Date())
print(strDate)
Run Code Online (Sandbox Code Playgroud)
如果你想设置defaultTimeZone的NSTimeZone对象,然后在斯威夫特3,你可以这样设置.
NSTimeZone.default = TimeZone(abbreviation: "BST")!
Run Code Online (Sandbox Code Playgroud)
let locale = NSTimeZone.init(abbreviation: "BST")
NSTimeZone.default = locale as! TimeZone
Run Code Online (Sandbox Code Playgroud)
试试这个
| 归档时间: |
|
| 查看次数: |
30497 次 |
| 最近记录: |