Javascript UTC/ISO 8601格式的日期转换

Javascript UTC/ISO 8601格式的日期转换,javascript,date,datetime,datetime-conversion,Javascript,Date,Datetime,Datetime Conversion,我正在进行日期转换。 我正在将2017-08-17 13:00:00日期格式转换为2017-08-17T13:00:00Z 工作示例: var自_日期起; var sdate=新日期(“2017-08-17 13:00:00”); var utcSDate=sdate.toISOString(); 起始日期=utcSDate.replace('.000',''); 控制台日志(从\u日期开始)我建议只替换缺少的部分,而不使用Date对象,在该对象中输入本地时间并获取祖鲁时间 var日期='2

我正在进行日期转换。 我正在将2017-08-17 13:00:00日期格式转换为2017-08-17T13:00:00Z

工作示例:

var自_日期起;
var sdate=新日期(“2017-08-17 13:00:00”);
var utcSDate=sdate.toISOString();
起始日期=utcSDate.replace('.000','');

控制台日志(从\u日期开始)
我建议只替换缺少的部分,而不使用
Date
对象,在该对象中输入本地时间并获取祖鲁时间

var日期='2017-08-17 13:00:00',
iso=日期。替换(/({10})({8})/,“$1T$2.000Z”);
控制台日志(日期);

控制台日志(iso)您可以从日期对象中减去偏移量:

var d = new Date();
var offsetInMinutes = d.getTimezoneOffset();
d.setMinutes(d.getMinutes() - offsetInMinutes);
d.toISOString()
但是这个代码将时间从13:00:00更改为08:00:00。这是为什么 幸福。有什么想法吗?或者有人给我一个转换日期的主意 如上所述,将我的输入转换为所需的输出

字符串“2017-08-17 13:00:00”不是ECMA-262支持的格式,因此,无论如何解析,它都完全依赖于实现,如果解析为日期,则很可能被视为ISO 8601 local,即“2017-08-17T13:00:00”。Safari将返回无效日期,Firefox将其解析为本地日期

因此,请始终避免使用内置解析器

如果只想重新格式化字符串,请将其作为字符串执行:

var s='2017-08-17 13:00:00';

console.log(s.replace(“”,'T')+'Z')
toISOString()方法转换为UTC,因此您需要将偏移量添加到您的时间中。您能详细说明一下偏移量吗?是的,我写了一个答案如果输入日期格式将来发生更改怎么办?如何将新的日期格式转换为UTC?