首页 文章

从datepicker获取日期与不同的时区

提问于
浏览
0

我正在使用标准的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
}

1 回答

  • 0

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

    第一 -

    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!)
     }
    

相关问题