使用JavaScript将字符串转换为epoch

z2acfund  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(110)

我是新的javascript和以下字符串'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);

但它给予错误的结果有什么想法如何实现这一点?

szqfcxe2

szqfcxe21#

假设你有一个字符串"2023-06-19 05:00:00.554",它表示GMT,你需要先将其转换为ISO 8601的字符串,这样无论使用什么浏览器,它都可以可靠地转换为Date对象。输入的ISO格式为"2023-06-19T05:00:00.554Z"
使用正则表达式将输入转换为ISO格式的代码:

const s = "2023-06-19 05:00:00.554";
let epoch = new Date(s.replace(/ (.*)$/, 'T$1Z')).getTime();
console.log(epoch); // output: 1687150800554
wgx48brx

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

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!

相关问题