javascript Date 对象使用小结
Date 对象用于处理日期与时间。
创建 Date 对象: new Date()
以下四种方法同样可以创建 Date 对象:
var d = new Date(); //获取当前时间(标准时间格式)
var d = new Date(milliseconds); //milliseconds表示从 1970 年 1 月 1 日 00:00:00 至今的毫秒数
var d = new Date(dateString); //dateString格式:2019/5/1,返回标准时间格式
//dateString格式:2020/7/14(默认为00:00:00)或2020/7/14(默认为08:00:00)
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
//↑可以局部/全部为空,不指定默认为0-->var d2 = new Date(79,5,24)表示:1979-06-24 00:00:00(Sun) ↑
- ※ 把 (标准)日期格式 转化为指定的格式
formatTime:function(dateData, type) {
let value = '';
let time = new Date(dateData);
let y = time.getFullYear(); //年(number)
let m = time.getMonth() + 1; //月
m = m < 10 ? `0${m}` : m;
let d = time.getDate(); //日
d = d < 10 ? `0${d}` : d;
let hh = time.getHours(); //时
hh = hh < 10 ? `0${hh}` : hh;
let mm = time.getMinutes(); //分
mm = mm < 10 ? `0${mm}` : mm;
let ss = time.getSeconds(); //秒
ss = ss < 10 ? `0${ss}` : ss;
// yyyy-MM-dd HH:mm:ss
if (type === 'yyyy-MM-dd HH:mm:ss') { //年-月-日 时:分:秒
let value = `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
}
if (type === 'yyyy-MM-dd HH:mm') { //年-月-日 时:分
let value = `${y}-${m}-${d} ${hh}:${mm}`;
}
if (type === 'yyyy-MM-dd') { //年-月-日:yyyy-mm-dd
value = `${y}-${m}-${d}`;
}
if (type === 'yyyy-MM') { //年-月:yyyy-mm
value = `${y}-${m}`;
}
if (type === 'HH:mm:ss') { //获取时间: 时+分+秒
value = `${hh}:${mm}:${ss}`;
}
if (type === 'HH:mm') { //获取时间: 时+分
value = `${hh}:${mm}`;
}
return value;
},
- ※ 获取星期
// ES6 取得星期数:周x,可以改为星期x
const getWeekDay = date => { //date参数:标准时间格式
const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
let weekNum = date.getDay(); // number型,取得当天在该周的序数(从周日开始计数):0-6
let weekDay = weekDays[weekNum]
return weekDay
}
- ※ 时间比较(取两个标准时间的差值)-可修改为日期比较等
timeGap(time0,time1) { //两参数均为标准时间格式
// 获取当前时间时间截方式:let ms0 = new Date().getTime();
let ms0 = time0.getTime(); //时间截-第一个时间
let ms1 = time1.getTime(); //时间截-第二个时间
// 相差毫秒数(时间截)
let totalMS = ms1 - ms0; //存在正负,可区别先后关系
let totalMSAbs = Math.abs(totalMS); //直接获取绝对值,仅取得差值
// 相差分钟数
let totalMins = parseInt((ms1 - ms0) / (1000 * 60)); //存在正负,区别大小:Math.abs(totalMins)获取绝对值
// 需要返回相差分钟数可参考下面天数返回...
// 返回相差天数...(可以直接俩日期相减---获得带正负的相差毫秒数,再进行后续判断和换算)
let totalDaysRest = Math.abs(ms1 - ms0) % (1000 * 60 * 60 * 24); // 用于判断是否整除
let totalDays = parseInt((ms1 - ms0) / (1000 * 60 * 60 * 24)); //存在正负,区别大小:Math.abs(totalDays)获取其绝对值
let totalDaysAbs = 0; // 用于存放实际天数
if(totalDaysRest > 0) { // 有额外时间,则天数需要加一
totalDaysAbs = Math.abs(totalDays) + 1;
} else if(totalDaysRest == 0) { //整除则没有额外天数直接返回绝对值
totalDaysAbs = Math.abs(totalDays);
}
return totalDaysAbs; //返回相差天数
}
- 附:取得各个参数,获取特定 字符串格式时间
var oDay = new Date();
oDay.getYear(); //当前年份
oDay.getFullYear(); //完整的年月日(xx年,xx月,xx日)
oDay.getMonth(); //当前的月份(0-11,0代表1月)
oDay.getMonth()+1; //获取当前的实际月份(1-12);
oDay.getDate(); //当前的日(1-31)
oDay.getDay(); //当前的星期X(0-6,0代表星期天)
oDay.getTime(); //时间截:当前的时间(从1970.1.1开始的毫秒数)
oDay.getHours(); //当前的小时数(0-23)
oDay.getMinutes(); //当前的分钟数(0-59)
oDay.getSeconds(); //当前的秒数(0-59)
oDay.getMilliseconds(); //当前的毫秒数(0-999)
oDay.toLocaleDateString(); //把 Date 对象的日期部分转换为字符串: 'yyyy/mm/dd'
var oTime=oDay.toLocaleTimeString(); //把 Date 对象的时间部分转为字符串格式:'下午hh:mm:ss';如:'上午8:30:12'
oDay.toLocaleString( ); //日期与时间转为字符串格式:'yyyy/mm/dd 下午hh:mm:ss'如:'2020/7/14 下午3:59:40'