不要这样写new Date('2019-3-5')
,会出bug。这个String格式为YYYY-M-D。
在iOS手机和safari浏览器上,这个格式会报错,改为YYYY-MM-DD,即new Date('2019-03-05')
是可以的,用/也是可以的,即new Date('2019/3/5')
。
下图为Safari的结果:
但是,有一些资料提到用’-'连接的日期字符串在IE上转换会失败,试过之后发现并不会,不确定是不是因为IE版本问题。
不管是YYYY/MM/DD还是YYYY/M/D,都可。
var str = '2019-3-5';
str = str.split('-').join('/'); //或: str.replace(new RegExp(/-/g),'/')
var date = new Date(str);
官网:http://momentjs.cn/
注意:构造函数返回的都是Date对象。
返回本地日期和时间的Date对象
new Date() //=> Thu Mar 07 2019 11:31:45 GMT+0800 (China Standard Time)
参数:毫秒时间戳(表示从1970/01/01 00:00:00为起点的毫秒数)。注意,要加上本地所在时区,因为北京是东八区,所以起始时间是1970/01/01 08:00:00
返回:Date对象
new Date(0) //=> Thu Jan 01 1970 08:00:00 GMT+0800 (China Standard Time)
由上文,推荐日期字符串的格式为:YYYY/MM/DD hh:mm:ss
返回Date对象
new Date('2019/03/07 07:05:01') //=> Thu Mar 07 2019 07:05:01 GMT+0800 (China Standard Time)
Date对象的实例方法主要分为2种形式:本地时间和UTC时间。例如:
var date = new Date(); //=> Thu Mar 07 2019 14:08:04 GMT+0800 (China Standard Time)
date.getHours(); //=> 14
date.getUTCHours(); //=> 6
下面列举几个容易混淆的:
var date = new Date(); //=> Thu Mar 07 2019 14:25:11 GMT+0800 (China Standard Time)
date.getDate(); //=> 7
date.getDay(); //=> 4
date.getTime(); //=> 1551939911331
date.valueOf(); //=> 1551939911331
返回当前日期和时间的Date对象与’1970/01/01 00:00:00’之间的毫秒值(北京时间的时区为东8区,起点时间实际为:‘1970/01/01 08:00:00’)
这个和new Date()
有什么区别?
Date.now()
返回的是毫秒值;new Date()
返回的是Date对象
Date.now();
//等价于
var date = new Date();
date.getTime();
把字符串转换为Date对象 ,然后返回此Date对象与’1970/01/01 00:00:00’之间的毫秒值(北京时间的时区为东8区,起点时间实际为:‘1970/01/01 08:00:00’)
Date.parse('2019/03/07'); //=> 1551888000000
//等价于
var date = new Date('2019/03/07');
date.getTime(); //=> 1551888000000
上面提到的实例方法,是需要Date对象的实例才可以调用。那不免在Date对象、日期字符串和毫秒上需要进行转换。
Date对象 => 日期字符串
var date = new Date();
date.toDateString(); //=> "Thu Mar 07 2019"
date.toUTCString(); //=> "Thu, 07 Mar 2019 07:55:36 GMT"
date.toLocaleString(); //=> "3/7/2019, 3:55:36 PM"
date.toLocaleDateString(); //=> "3/7/2019"
日期字符串 => Date对象
var date = new Date('2019/03/07'); //=> Thu Mar 07 2019 00:00:00 GMT+0800 (China Standard Time)
Date对象 => 时间戳
var date = new Date();
date.getTime(); //=> 1551946333499
date.valueOf(); //=> 1551946333499
时间戳 => Date对象
var date = new Date(1551946333499); //=> Thu Mar 07 2019 16:12:13 GMT+0800 (China Standard Time)
日期字符串 => 时间戳
Date.parse('2019/03/07') //=> 1551888000000
时间戳 => 日期字符串
var date = new Date(1551888000000);
date.toLocaleDateString(); //=> "3/7/2019"
————
其他日期处理函数请参考:https://blog.csdn.net/joyce_lcy/article/details/85697437