用javascript转换字符串中的日期



我需要从字符串格式的日期(如"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());

相关内容

  • 没有找到相关文章

最新更新