new Date(new Date().setHours(0, 0, 0, 0)) //当天0点时间戳
new Date().setMonth((new Date().getMonth() - 1)) //前一个月时间戳
new Date(new Date().setHours(23,59,59,999)).getTime() //当天结束时间戳
var now = new Date(); // 当前日期
var nowDayOfWeek = now.getDay(); // 今天本周的第几天
var nowDay = now.getDate(); // 当前日 当前多少号(1~31
var nowMonth = now.getMonth(); // 当前月
var nowYear = now.getYear(); // 当前年
new Date(new Date().setHours(0, 0, 0) - 1000 * 3600 * 24 *1) //获取前一天的开始时间的时间戳也就是0:00
new Date(new Date().setHours(23, 59, 59, 999) +24*60*60*1000-1)//获取后一天(明天)的开始时间的时间戳也就是23:59
nowYear += (nowYear < 2000) ? 1900 : 0;
// ios 不支持日期- 全局替换 .replace(/-/g, '/')
var DateUtil = {
//获取前几个月开始日期比如今天是2月5号,获取最近1个月的数据就是 1月5号 并且获取1月5号的0点开始日期
getMouthData(n){
let data=new Date().setMonth((new Date().getMonth() - n))
return new Date(data).setHours(0, 0, 0, 0)
},
mymethod(birthday) { //根据日期算年龄
if (birthday) {
birthday = birthday.split('-');
// 新建日期对象
let date = new Date();
// 今天日期,数组,同 birthday
let today = [date.getFullYear(), date.getMonth() + 1, date.getDate()];
// 分别计算年月日差值
let age = today.map((val, index) => {
return val - birthday[index]
})
// 当天数为负数时,月减 1,天数加上月总天数
if (age[2] < 0) {
// 简单获取上个月总天数的方法,不会错
let lastMonth = new Date(today[0], today[1], 0)
age[1]--
age[2] += lastMonth.getDate()
}
// 当月数为负数时,年减 1,月数加上 12
if (age[1] < 0) {
age[0]--
age[1] += 12
}
return {
year: year,
month: month,
day: day
}
}
},
myfunction(ageYear, ageMonth, ageDay = 0) { //根据年龄算日期
var subYear = parseInt(ageYear);
var subMonth = parseInt(ageMonth);
var subDay = parseInt(ageDay);
var now = new Date();
var nowYear = now.getFullYear();
var nowMonth = now.getMonth() + 1;
var nowDay = now.getDate(); // 按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。
var day = nowDay - subDay;
var month = nowMonth - subMonth;
var year = nowYear - subYear; // 检查是否溢出
if (day <= 0) { // 获得上月的天数
var lastMonth = nowMonth - 1;
var lastMonthOfYear = nowYear;
if (lastMonth <= 0) {
lastMonth = lastMonth + 12 //(lastMonth + 12) % 12;
lastMonthOfYear = lastMonthOfYear - 1;
}
day = day + new Date(lastMonthOfYear, lastMonth, 0).getDate();
month = month - 1;
}
if (month <= 0) {
month = month + 12 //(month + 12) % 12;
year--;
}
if (month < 10) {
month = '0' + month
}
if (day < 10) {
day = '0' + day
}
return {
year: year,
month: month,
day: day
}
},
/**
* 获得当前日期
*
* @returns
*/
getNowDay() {
return this.formatDate(new Date());
},
/*
获取几天之后的日期
计算当前日期的 day 天
*/
getDayOption(day) {
var targetday_milliseconds = now.getTime() + (24 * 60 * 60 * 1000 * day);
let endTimp = new Date(targetday_milliseconds); //注意,这行是关键代码
return this.formatDate(endTimp)
},
//获取指定前几月的开始和当前结束日期,结束日期是当前日期
//比如3个月之前,number输入三即可,就会返回三个月之前开始时间和,当前的结束日期
getLastMonthDay (number) {
const today = new Date();
const startDate = new Date(today.setMonth(today.getMonth() - number));
return {
start:this.formatDate(startDate),
end: this.formatDate(now)
};
},
/* 获取几天之前的日期 */
getDayOptionEd(day) {
var targetday_milliseconds = now.getTime() - (24 * 60 * 60 * 1000 * day);
let endTimp = new Date(targetday_milliseconds); //注意,这行是关键代码
return this.formatDate(endTimp)
},
/**
* 获得本周的开始时间
*
* @returns
*/
getStartDayOfWeek() {
var day = nowDayOfWeek || 7;
return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 1 - day));
},
/**
* 获得本周的结束时间
*
* @returns
*/
getEndDayOfWeek() {
var day = nowDayOfWeek || 7;
return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 7 - day));
},
/**
* 获得本月的开始时间
*
* @returns
*/
getStartDayOfMonth() {
var monthStartDate = new Date(nowYear, nowMonth, 1);
return this.formatDate(monthStartDate);
},
/**
* 获得指定月份 年 的天数
* yerr 指定年 month 指定月 如果不传默认当前年月日的天数
*
* @returns
*/
getMonthDays(yerr=nowYear,month=nowMonth) {
var monthStartDate = new Date(yerr, month, 1);
var monthEndDate = new Date(yerr, month + 1, 1);
var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
return days;
},
// 获取本周开始时间和结束时间
getThisWeek () {
const t1 = this.getDayOption(-(nowDayOfWeek - 1))
const t2 = this.getDayOption(+(7 - nowDayOfWeek))
return [t1, t2]
},
// 获取上周或者上几周开始时间和结束时间
// numb 上几周
getLastWeek (numb=1) {
const t1 = this.getDayOption(-(nowDayOfWeek - 1 + 7*numb))
const t2 = this.getDayOption(-nowDayOfWeek)
return [t1, t2]
},
// 获取本月开始时间和结束时间
getThisMonth () {
// 获取本月开始时间格式 new Date(年, 月(0~11), 1)
const t1 = this.formatDate(new Date(nowYear, nowMonth, 1))
// 获取月总天数格式 new Date(年, 月(1~12), 0).getDate()
const thisTotalDay = new Date(nowYear, nowMonth + 1, 0).getDate() // 获取本月总天数(1~31)
// 获取本月结束时间格式 new Date(年, 月(0~11), 本月总天数)
const t2 = this.formatDate(new Date(nowYear, nowMonth, thisTotalDay))
return [t1, t2]
},
// 获取上个月开始时间和结束时间
getLastMonth () {
// 获取上月总天数
let lastTotalDay = ''
// 如果是一月份
if (nowMonth === 0) {
// 获取去年12月总共有多少天
lastTotalDay = new Date(nowYear - 1, 12, 0).getDate()
} else {
// 获取上月总共有多少天
lastTotalDay = new Date(nowYear, nowMonth, 0).getDate()
}
// 上月总天数加上当前多少号 前的 日期
const t1 = this.getDayOption(-(nowDay - 1 + lastTotalDay))
const t2 = this.getDayOption(-nowDay)
return [t1, t2]
},
// 获取当年指定月份的开始结束日期
getFirstDayOfMonth(year=nowYear,month){
// 指定年月结束的日期
let lastTotalDay = new Date(year, month, 0)
let firstTotalDay = new Date(year, month-1, 1)
// 上月总天数加上当前多少号 前的 日期
console.log(lastTotalDay)
const t1 = this.formatDate(firstTotalDay)
const t2 = this.formatDate(lastTotalDay) //指定年月份结束日期
return [t1, t2]
},
/**
* @param 日期格式化
* @returns {String}
*/
formatDate(date) {
var myyear = date.getFullYear();
var mymonth = date.getMonth() + 1;
var myweekday = date.getDate();
if (mymonth < 10) {
mymonth = "0" + mymonth;
}
if (myweekday < 10) {
myweekday = "0" + myweekday;
}
return {
time: (myyear + "/" + mymonth + "/" + myweekday),
year: myyear,
month: mymonth,
day: myweekday
};
}
};
export {
DateUtil
}
使用
import {DateUtil} from "@/utils/utils.js"
DateUtil.getNowDay() //获取当前时间
比对两个时间段是否不相等
应该使用如下Date.parse方法才可以
Date.parse(getTIme)>Date.parse(data1Ed)
其他方法会有问题,如果如果时间相近就会比对不成功
如果使用getData()方法吧两个时间段格式化之后就会比对不成功