我是新的javascript和以下字符串'2023-06-19 05:00:00.554',并希望将其转换为时代,我正在尝试这样的东西
'2023-06-19 05:00:00.554'
var s = "2023-06-19 05:00:00.554"; var epoch = new Date(s).getTime(); console.log(epoch);
但它给予错误的结果有什么想法如何实现这一点?
szqfcxe21#
假设你有一个字符串"2023-06-19 05:00:00.554",它表示GMT,你需要先将其转换为ISO 8601的字符串,这样无论使用什么浏览器,它都可以可靠地转换为Date对象。输入的ISO格式为"2023-06-19T05:00:00.554Z"使用正则表达式将输入转换为ISO格式的代码:
"2023-06-19 05:00:00.554"
"2023-06-19T05:00:00.554Z"
const s = "2023-06-19 05:00:00.554"; let epoch = new Date(s.replace(/ (.*)$/, 'T$1Z')).getTime(); console.log(epoch); // output: 1687150800554
wgx48brx2#
正如Ricky Mo所解释的,您必须指定日期的时区值,否则,系统将使用主机系统在此日期的时区(使用STD或DST计算)。两种方式
var s = "2023-06-19T05:00:00.554+00:00" // or var s = "2023-06-19T05:00:00.554Z" // Zulu time zone
感谢Darryl Noakes提醒我Z(代表ICAO的“Zulu”)(但我更容易记住带有正+或负-符号的符号,时间差的值为±hh:mm)
Z
+
-
±hh:mm
var s = "2023-06-19T05:00:00.554+00:00"; // GMT 0 -> + 0h, 0mn var epoch = new Date(s).getTime(); console.log(epoch); // 1687150800554 everywhere in the world!
2条答案
按热度按时间szqfcxe21#
假设你有一个字符串
"2023-06-19 05:00:00.554"
,它表示GMT,你需要先将其转换为ISO 8601的字符串,这样无论使用什么浏览器,它都可以可靠地转换为Date对象。输入的ISO格式为"2023-06-19T05:00:00.554Z"
使用正则表达式将输入转换为ISO格式的代码:
wgx48brx2#
正如Ricky Mo所解释的,您必须指定日期的时区值,
否则,系统将使用主机系统在此日期的时区(使用STD或DST计算)。
两种方式
感谢Darryl Noakes提醒我
Z
(代表ICAO的“Zulu”)(但我更容易记住带有正+
或负-
符号的符号,时间差的值为±hh:mm
)