如何将GMT日期转换为系统日期格式?

时间:2019-07-18 08:35:46

标签: swift nsdateformatter

我有一个日期:2019-07-18 00:30:32 GMT + 10:00。

我想将字符串转换为日期,但日期输入错误。


let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZZ"
dateFormatter.timeZone = NSTimeZone.local;
dateFormatter.locale = NSLocale.current;

let date = dateFormatter.date(from:isoDate)!

它给出了错误的日期:“ 2019年7月17日,晚上8:00”

2 个答案:

答案 0 :(得分:0)

  

使用固定格式的日期(例如RFC 3339)时,请设置   dateFormat属性指定格式字符串。对于大多数固定   格式,还应该将locale属性设置为POSIX语言环境   (“ en_US_POSIX”),并将timeZone属性设置为UTC。

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

参考:Apple

我看到它显示了正确的日期,它基于您的时区enter image description here

使用: https://www.epochconverter.com/

答案 1 :(得分:-1)

使用此命令:https://momentjs.com/timezone/

var newYork    = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london     = newYork.clone().tz("Europe/London");

newYork.format();    // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format();     // 2014-06-01T17:00:00+01:00