• 微信号
  • 微信号
目录

javascript

您当前的位置:首页 > 我的笔记 > javascript>javascript日期字符串转换成时间戳的多种方法

上一篇: JavaScript是什么?JavaScript简介

下一篇: 很抱歉没有了

javascript日期字符串转换成时间戳的多种方法

js中,new Date([params]), 参数传递有以下几种方式,如果传的参数不对,会显示日期格式不对:

new Date("month dd,yyyy hh:mm:ss");

new Date("month dd,yyyy");

new Date(yyyy,mth,dd,hh,mm,ss); //注意:这种方式下,必须传递整型;

new Date(yyyy,mth,dd);

new Date(ms);

new Date('日期字符串')

new Date(星期参数) //接受年、周数(ISO周数,一年的第一周从1月4日开始)、星期几(0=星期日,1=星期一,依此类推)。

new Date(UTC 参数) //与多参数形式类似,但是所有时间都是以协调世界时(UTC)来表示的。

new Date(拼接字符串) // 用/拼接,正确,用-拼接,IE、fireFox错误,chrome正确,统一用/拼接

注意:ms:是需要创建的时间和 GMT时间1970年1月1日之间相差的毫秒数

下面是对以上的说明示例:

new Date("Jun 2,2017 12:00:00"); //Fri Jun 02 2017 12:00:00 GMT+0800 (中国标准时间)new Date("Jun 2,2017"); //Fri Jun 02 2017 00:00:00 GMT+0800 (中国标准时间)new Date(2017,5,2,12,0,0); //Fri Jun 02 2017 12:00:00 GMT+0800 (中国标准时间)new Date(2017,5,2); //Fri Jun 02 2017 00:00:00 GMT+0800 (中国标准时间)new Date(1496376000000);//以上输出的都是2017年6月2号的时间new Date('2024-08-09T12:00:00Z') //Fri Aug 09 2024 20:00:00 GMT+0800 (中国标准时间)new Date(2024, 0, 4) //Thu Jan 04 2024 00:00:00 GMT+0800 (中国标准时间)new Date(Date.UTC(2024, 7 - 1, 9, 12, 0, 0)) //Tue Jul 09 2024 20:00:00 GMT+0800 (中国标准时间)new Date("2009/1/1") //Thu Jan 01 2009 00:00:00 GMT+0800 (中国标准时间)

主场开始啦!处理非ISO标准格式 - 比如日期字符串形式

对于非ISO标准格式的日期字符串,以"年-月-日 时:分:秒"为例,需要手动解析:

function customDateStringToTimestamp(str) { const [year, month, day, hour, minute, second] = str.split(/[- :]/); return new Date(year, month - 1, day, hour, minute, second).getTime(); // 注意月份减1}//1722484800000console.log(customDateStringToTimestamp("2024-08-01 12:00:00"));

使用正则表达式辅助解析

对于格式固定的日期字符串,可以利用正则表达式提取各部分,适用于复杂或不规则格式。

function regexDateStringToTimestamp(str) { const **tch = str.**tch(/(\d{4})-(\d{2})-(\d{2})S(\d{2}):(\d{2}):(\d{2})/); if (**tch) { return new Date(**tch[1], **tch[2] - 1, **tch[3], **tch[4], **tch[5], **tch[6]).getTime(); } return null; // 或者抛出错误处理}//1722487015000console.log(regexDateStringToTimestamp("2024-08-01S12:36:55"));

使用Date.parse()

Date.parse()可以直接解析ISO 8601格式的字符串为时间戳,但要注意浏览器兼容性和解析的准确性。不推荐这种方式:因为毫秒改成了000显示。

function dateStringToTimestampWithParse(str) { return Date.parse(str);}//1722522625000console.log(dateStringToTimestampWithParse("2024-08-01T14:30:25Z"));

使用getTime()

这是最基本的方法,也是最推荐的一种方式。参数既可以是普通的日期字符串(非ISO标准格式),也可以是ISO标准格式。但是得出的时间戳略有不同。

日期字符串格式:

function dateStringToTimestamp(str) { return new Date(str).getTime();}//时间字符串格式,1711949424000console.log(dateStringToTimestamp("2024-04-01 13:30:24"));

ISO 8601格式:

function dateStringToTimestamp(str) { return new Date(str).getTime();}// ISO 8601格式,1711978224000console.log(dateStringToTimestamp("2024-04-01T13:30:24Z"));

GMT格式:

function dateStringToTimestamp(str) { return new Date(str).getTime();}// GMT格式,1496376000000console.log(dateStringToTimestamp("Fri Jun 02 2017 12:00:00 GMT+0800"));

Date.valueOf()

这种方法推荐,如getTime()一样推荐。

var timestamp = (new Date()).valueOf()//1723191778185 console.log(timestamp)

valueOf(),getTime(),Date.parse()区别:

Date.parse()相对前两种方法,精确度还是差一些。

//1723192068376console.log(new Date().valueOf())//1723192068378console.log(new Date().getTime())//1723192068000console.log(Date.parse(new Date()))

使用第三方库(如moment.js或date-fns)

使用moment.js:

// 需要先引入moment.js库const moment = require('moment');function dateStringToTimestampMoment(str) { return moment(str).valueOf();} 

console.log(dateStringToTimestampMoment("2023-04-01T12:00:00Z"));

使用date-fns:

// 需要先引入date-fns库import { parseISO, for**t } from 'date-fns';function dateStringToTimestampDateFns(str) { return parseISO(str).getTime();} 

console.log(dateStringToTimestampDateFns("2023-04-01T12:00:00Z"));

上一篇: JavaScript是什么?JavaScript简介

下一篇: 很抱歉没有了