【问题标题】:Getting date from datepicker wrt different timezones从日期选择器获取不同时区的日期
【发布时间】:2018-04-26 09:49:46
【问题描述】:

我正在使用标准的 DatePicker 并在其上打印日期。 出于某种原因,我的日期选择器将时区设置为 IST,这可能是由于语言环境。

我们来看一个例子:

DatePicker -> 12:00 PM 日期读取 -> 06:30:00 +0000

这是正确的,因为日期将打印 UTC 时间,而 ISTUTC+5:30

现在,当我更改 DatePicker 的时区时,假设伦敦是 GMT+1

DatePicker -> 12:00 PM 日期读取 -> 06:30:00 +0000

日期的实际位置应该是 11:00:00

我如何更改 DatePicker 的时区:

if let tmz = selectTimeZone {

    datePicker.timeZone = tmz
}

【问题讨论】:

  • 你能分享更多与添加/显示选择器相关的代码吗?
  • 在将日期转换为字符串时更改 DateFormatter 时区。无需设置 Datepicker 的时区
  • 如果有进一步需要,试试这个stackoverflow.com/a/52477989/10150796

标签: ios swift uidatepicker


【解决方案1】:

我之前有过同样的问题,但出于另一个原因。试试这个希望它会有所帮助。

第一-

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
var startDate = dateFormatter.string(from: yourdatepicker.date)
startDate = localToUTC(date: startDate)

第二次我们将其转换为本地时间到 UTC,这里我们提到 TimeZone 到系统时间

func localToUTC(date:String) -> String {

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = NSTimeZone.system
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dt = dateFormatter.date(from: date)
return dateFormatter.string(from: dt!)
}

如果你想将 UTC 转换为你的本地时间,第三个

func UTCToLocal(date:String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: date)
dateFormatter.timeZone = NSTimeZone.system
dateFormatter.dateFormat = "hh:mm a"
return dateFormatter.string(from: dt!)
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多