日期是常用的属性。总结一下, 以后会慢慢补充
1. 基础属性
var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间
2. 常用的方法和属性
// 获取当天的零点开始的日期
new Date(new Date().toLocaleDateString()) // Sun Nov 24 2019 00:00:00 GMT+0800 (中国标准时间)
// 日期初始化的5种方法
1)new Date("month dd,yyyy hh:mm:ss"); // new Date("January 12,2006 22:19:35");
2)new Date("month dd,yyyy"); // new Date("January 12,2006");
3)new Date(yyyy,mth,dd,hh,mm,ss); // new Date(2006,0,12,22,19,35);
4)new Date(yyyy,mth,dd); // new Date(2006,0,12);
5)new Date(ms); // new Date(1137075575000);
// js获取当前时间戳的5种方式(都是13位)
Date.parse(new Date()) // 只有这个是精确到秒,因为后三位是0
+new Date() // 这种方式比较简便,推荐使用
Date.now()
new Date().getTime()
new Date().valueOf()
// 一些比较常用的日期方法
new Date().toLocaleDateString() // "2019/11/24"
new Date().toLocaleString() // "2019/11/24 下午8:07:09"
3. 不常用的一些方法属性
new Date().toISOString() // "2019-11-24T11:57:55.888Z" 转换成java8格式的日期对象
// 将java8日期对象转化成js日期格式
new Date("2019-11-24T11:57:55.888Z") // Sun Nov 24 2019 19:57:55 GMT+0800 (中国标准时间)
+new Date("2019-11-24T11:57:55.888Z") //1574596675888
4. 返回num天后的年月日字符串
// 得到前天,今天,后天的日期:eg:今天20190325 , 那么得到前天 20190323 , 后天 20190327
function GetDateStr(num) {
let getChangeDate = new Date();
getChangeDate.setDate(getChangeDate.getDate() + num); // 获取num天后的日期
let year = getChangeDate.getFullYear();
console.log(year);
let month =
getChangeDate.getMonth() + 1 < 10
? "0" + (getChangeDate.getMonth() + 1)
: getChangeDate.getMonth() + 1;
let date =
getChangeDate.getDate() < 10
? "0" + getChangeDate.getDate()
: getChangeDate.getDate();
console.log("" + year + month + date);
return "" + year + month + date;
}
5. 得到今天, 昨天, 本周, 上周, 本月, 上月, 本季度,本年等的开始结束日期
/**
* console.log('今天', getRangeDate('今天')) // 今天 2021-04-25 2021-04-25
* console.log('昨天', getRangeDate('昨天')) // 昨天 2021-04-24 2021-04-25
* console.log('本周', getRangeDate('本周')) // 本周 2021-04-19 2021-04-25
* console.log('本月', getRangeDate('本月')) // 本月 2021-04-01 2021-04-25
* console.log('本季', getRangeDate('本季')) // 本季 2021-04-01 2021-04-25
* console.log('本年', getRangeDate('本年')) // 本年 2021-01-01 2021-04-25
*/
function getRangeDate(str, connectChar = ' ') {
let oneDay = 60 * 1000 * 60 * 24;
let now = new Date();
let nowDay = now.getDay();
let nowDate = now.getDate();
let nowMonth = now.getMonth() + 1;
let nowYear = now.getFullYear();
let res = '';
let todayDate = `${_addZero(nowYear)}-${_addZero(nowMonth)}-${_addZero(nowDate)}`;
switch (str) {
case '今天':
res = formatTime(now) + connectChar + formatTime(now);
break;
case '昨天':
res = formatTime(+now - oneDay) + connectChar + formatTime(now);
break;
case '本周':
res = formatTime(+now - oneDay * (nowDay === 0 ? nowDay + 6 : nowDay - 1)) + connectChar + formatTime(now);
break;
case '上周':
res = formatTime(+now - oneDay * ((nowDay === 0 ? nowDay + 6 : nowDay - 1) + 6)) + connectChar + formatTime(+now -
oneDay *
((nowDay === 0 ? nowDay + 6 : nowDay - 1)));
break;
case '本月':
res = _addZero(nowYear) + '-' + _addZero(nowMonth) + '-' + _addZero(1) + connectChar + todayDate;
break;
case '上月':
if (nowMonth !== 1) {
res = _addZero(nowYear) + '-' + _addZero(nowMonth - 1) + '-' + _addZero(1) + connectChar + formatTime(new Date(
_addZero(
nowYear) + '-' + _addZero(nowMonth) + '-' + _addZero(1) + ' 00:00:00')
.getTime() - oneDay);
} else {
res = _addZero(nowYear) + '-' + _addZero(12) + '-' + _addZero(1) + connectChar + formatTime(new Date(_addZero(
nowYear) +
'-' + _addZero(12) + '-' + _addZero(nowDate)) - oneDay);
}
break;
case '本季':
// 1,2,3 一季度。 4,5,6 二季度。 7,8,9 三季度。 10,11,12 四季度
let startQuarter = '';
if (nowMonth === 1 || nowMonth === 2 || nowMonth === 3) {
startQuarter = _addZero(nowYear) + '-01-01';
} else if (nowMonth === 4 || nowMonth === 5 || nowMonth === 6) {
startQuarter = _addZero(nowYear) + '-04-01';
} else if (nowMonth === 7 || nowMonth === 8 || nowMonth === 9) {
startQuarter = _addZero(nowYear) + '-07-01';
} else if (nowMonth === 10 || nowMonth === 11 || nowMonth === 12) {
startQuarter = _addZero(nowYear) + '-10-01';
}
res = startQuarter + connectChar + todayDate;
break;
case '上季度':
// 1,2,3 一季度。 4,5,6 二季度。 7,8,9 三季度。 10,11,12 四季度
let startQuarter2 = '';
let endQuarter = '';
if (nowMonth === 1 || nowMonth === 2 || nowMonth === 3) {
startQuarter2 = _addZero(nowYear - 1) + '-10-01';
endQuarter = _addZero(nowYear) + '-01-01';
} else if (nowMonth === 4 || nowMonth === 5 || nowMonth === 6) {
startQuarter2 = _addZero(nowYear) + '-01-01';
endQuarter = _addZero(nowYear) + '-04-01';
} else if (nowMonth === 7 || nowMonth === 8 || nowMonth === 9) {
startQuarter2 = _addZero(nowYear) + '-04-01';
endQuarter = _addZero(nowYear) + '-07-01';
} else if (nowMonth === 10 || nowMonth === 11 || nowMonth === 12) {
startQuarter2 = _addZero(nowYear) + '-07-01';
endQuarter = _addZero(nowYear) + '-10-01';
}
res = startQuarter2 + connectChar + endQuarter;
break;
case '本年':
res = _addZero(nowYear) + '-01-01' + connectChar + todayDate;
break;
case '上年':
res = _addZero(nowYear - 1) + '-01-01' + connectChar + formatTime(new Date(_addZero(nowYear) + '-01-01')
.getTime() - oneDay);
break;
default:
break;
};
return res;
}
function _addZero(str) {
str = str.toString();
let res = str.length < 2 ? '0' + str : str;
return res;
};
function formatTime(time, cFormat = '{y}-{m}-{d}') {
let date;
if (typeof time === 'object') {
date = time;
} else {
if (('' + time)
.length === 10) time = parseInt(time) * 1000;
date = new Date(time);
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
};
let timeStr = cFormat.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]; // Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value];
}
if (result.length > 0 && value < 10) {
value = '0' + value;
}
return value || 0;
});
return timeStr;
};