我需要从字符串格式的日期(如"2011-05-12 16:50:404.055")转换为Javascript 中1970年1月1日午夜以来的毫秒数
为了确保正确的跨浏览器行为,我认为您应该自己解析字符串。我把这个答案塑造成:
function msFromString(dateAsString)
{
var parts = dateAsString.match(/(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2}).(d{3})/);
return new Date(parts[1],
parts[2] - 1,
parts[3],
parts[4],
parts[5],
parts[6],
parts[7]).getTime();
}
console.log(msFromString("2011-05-12 16:50:44.055"));
从而输出CCD_ 1。
更新2023
失败的原因在于浏览器实现对Date.parse的处理,以及它们如何允许日期字符串不符合日期标准
ECMAScript基于ISO8601日历日期扩展格式的简化定义了日期时间的字符串交换格式
格式如下:YYYY-MM-DDTHH:mm:ss.sssZ
所以我们可以强制你的字符串进入这个
const getDateFromString = str => {
const [date,time] = str.split(" ");
// reformat string into YYYY-MM-DDTHH:mm:ss.sssZ
str = `${date}T${time}Z`
return new Date(str);
};
let date = getDateFromString('2011-05-12 16:50:44.055');
console.log(date)
您尝试过Date.parse()
方法吗?它应该能识别这种格式(尽管我还没有测试过)。返回值应该是自1970年1月1日以来的毫秒数。
从日期字符串中创建一个Date对象,并使用getTime()方法获取自1970年1月1日以来的毫秒数。http://www.w3schools.com/jsref/jsref_obj_date.asp
var date = new Date("2011-05-12 16:50:44.055");
document.write(date.getTime());