var now = new Date();
now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear(); // 2015, 年份
now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月
now.getDate(); // 24, 表示24号
now.getDay(); // 3, 表示星期三
now.getHours(); // 19, 24小时制
now.getMinutes(); // 49, 分钟
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒数
now.getTime(); // 1435146562875, 以number形式表示的时间戳
var now = +new Date(); //+new Date()直接获取时间戳,等同于now.getTime();
注意,当前时间是浏览器从本机操作系统获取的时间,所以不一定准确,因为用户可以把当前时间设定为任何值。
- 如果要创建一个指定日期和时间的Date对象,可以用:
var d = new Date(2015, 5, 19, 20, 15, 30, 123);
d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
- 第二种创建一个指定日期和时间的方法是解析一个符合ISO 8601格式的字符串
var d = Date.parse('2015-06-24T19:49:22.875+08:00');
d; // 1435146562875
不过有时间戳就可以很容易地把它转换为一个Date
toLocaleDateString()
方法可根据本地时间把 Date 对象的日期部分转换为字符串,并返回结果
var d = new Date(1435146562875);
d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
d.getMonth(); // 5
d.toLocaleString();
// '2015/6/24 下午7:49:22',本地时间(北京时区+8:00),显示的字符串与操作系统设定的格式有关
- 获取当天零点的时间戳
let startTime1 = new Date(new Date(new Date().toLocaleDateString()).getTime()); // 当天0点
/*
new Date()
Wed Mar 25 2020 23:00:41 GMT+0800 (中国标准时间)
new Date().toLocaleDateString()
"2020/3/25"
new Date(new Date().toLocaleDateString())
Wed Mar 25 2020 00:00:00 GMT+0800 (中国标准时间)
new Date(new Date().toLocaleDateString()).getTime()
1585065600000
new Date(new Date(new Date().toLocaleDateString()).getTime())
Wed Mar 25 2020 00:00:00 GMT+0800 (中国标准时间)
*/
let endTime1 = new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1);// 当天23:59
/*
new Date()
Wed Mar 25 2020 23:03:23 GMT+0800 (中国标准时间)
new Date().toLocaleDateString()
"2020/3/25"
new Date(new Date().toLocaleDateString())
Wed Mar 25 2020 00:00:00 GMT+0800 (中国标准时间)
new Date(new Date().toLocaleDateString()).getTime()
1585065600000
new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1
1585151999999
new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1)
Wed Mar 25 2020 23:59:59 GMT+0800 (中国标准时间)
*/
- 时间戳的几种获取方式
var now = new Date();
var time1 = now.getTime();
var time2 = now.valueOf();
var time3 = now.parse(date);
var now = +new Date(); //+new Date()直接获取时间戳,等同于now.getTime();
console.log(time1);//1398250549123
console.log(time2);//1398250549123
console.log(time3);//1398250549000
/*
第一、第二种:会精确到毫秒
第三种:只能精确到秒,毫秒用000替代
注意:获取到的时间戳除以1000就可获得Unix时间戳,就可传值给后台得到
*/
- 将时间戳转换为日期格式
旧思路
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
//时间戳为10位需*1000,时间戳为13位的话不需乘1000--->((如果是Unix时间戳记得乘以1000。比如:PHP函数time()获得的时间戳就要乘以1000。))
var Y = date.getFullYear() + '-';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
var D = date.getDate() + ' ';
var h = date.getHours() + ':';
var m = date.getMinutes() + ':';
var s = date.getSeconds();
return Y+M+D+h+m+s;
}
timestampToTime(1403058804);
console.log(timestampToTime(1403058804));//2014-06-18 10:33:24
新思路
function time(time = +new Date()) {
var date = new Date(time + 8 * 3600 * 1000); // 增加8小时
return date.toJSON().substr(0, 19).replace('T', ' ');
}
time();
Date的‘toJSON’方法返回格林威治时间的JSON格式字符串,实际是使用‘toISOString’方法的结果。字符串形如‘2018-08-09T10:20:54.396Z’,
转化为北京时间需要额外增加八个时区,我们需要取字符串前19位,然后把‘T’替换为空格,即是我们需要的时间格式。把时间格式中的‘-’修改为‘.’或者其他符号都是可以的。
对比老方法,这种方法代码量比以前省了不止一星半点的,读起来也简洁多了。如果时间格式需要毫秒数,只需要获取前23位字符串,和上面一样用replace方法替换