如何用JavaScript将字符串'2023-06-19 05:00:00.554'转为Epoch时间?
解决JavaScript日期字符串转Epoch时间的问题
你的代码出现问题的核心原因是:你使用的"2023-06-19 05:00:00.554"这种空格分隔日期和时间的格式,不属于ECMAScript标准定义的可移植日期格式,不同JavaScript运行环境(比如不同浏览器)对它的解析行为不一致,可能返回错误的时间戳甚至NaN。
下面提供两种可靠的解决方法:
方法一:转为标准ISO 8601格式
把日期和时间之间的空格替换为T,转换成ISO标准格式后,所有现代浏览器和Node.js都能正确解析:
var s = "2023-06-19 05:00:00.554"; // 将空格替换为T,转为ISO标准格式 var isoString = s.replace(' ', 'T'); var epoch = new Date(isoString).getTime(); console.log(epoch); // 输出正确的毫秒级Epoch时间戳
方法二:手动拆分日期时间参数(兼容性最强)
如果需要兼容更旧的环境,可以手动拆分字符串中的年、月、日、时、分、秒、毫秒,直接传给Date构造函数(注意月份是从0开始的,需要减1):
var s = "2023-06-19 05:00:00.554"; // 拆分日期和时间部分 var [dateSegment, timeSegment] = s.split(' '); // 拆分日期的年、月、日 var [year, month, day] = dateSegment.split('-').map(Number); // 拆分时间的时、分、秒、毫秒 var [hours, minutes, seconds, milliseconds] = timeSegment.split(/[:.]/).map(Number); // 创建Date对象,月份要减1(因为JS中月份是0-11) var date = new Date(year, month - 1, day, hours, minutes, seconds, milliseconds); var epoch = date.getTime(); console.log(epoch);
这两种方法都能确保你得到正确的Epoch时间戳,其中方法二的兼容性最好,几乎能适配所有JavaScript运行环境。
内容的提问来源于stack exchange,提问作者jsor
相关产品推荐
相关产品推荐

