js 处理时间,获取年月日,当月第一天和最后一天,当前日期本周第一天和最后一天
1、获取当前月份的第一天
//获取当前月份的第一天
function getCurrentMonthFirst(fmt,datetime) {
var date;
if (isEmptyOrNull(datetime)) {
date = new Date();
}else{
date=datetime
}
date.setDate(1);
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth()+1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt
}
2、获取当前月份的最后一天
//获取当前月份的最后一天
function getCurrentMonthLast(fmt,datetime) {
var date;
if (isEmptyOrNull(datetime)) {
date = new Date();
} else {
date = datetime;
}
var currentMonth=date.getMonth();
var nextMonth=++currentMonth;
var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
var oneDay=1000*60*60*24;
var lastTime=new Date(nextMonthFirstDay-oneDay);
var month=parseInt(lastTime.getMonth()+1);
var day=lastTime.getDate();
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": month+"", // 月
"d+": day+"", // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt
}
3、获取当前时间的本周的第一天
//获取当前时间的本周的第一天的日期
function getWeekFirstDay(fmt,datetime){
var curr;
if (isEmptyOrNull(datetime)) {
curr = new Date(datetime);
}else{
curr=datetime;
}
var first = curr.getDate() - curr.getDay();
var firstday = new Date(curr.setDate(first));
var month=firstday.getMonth()+1;
var day=firstday.getDate();
const opt = {
"Y+": firstday.getFullYear().toString(), // 年
"m+": month+"", // 月
"d+": day+"", // 日
"H+": firstday.getHours().toString(), // 时
"M+": firstday.getMinutes().toString(), // 分
"S+": firstday.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt
}
4、获取当前时间的本周的最后一天的日期
//获取当前时间的本周的最后一天的日期
function getWeekLastDay(fmt,datetime){
var curr;
if (isEmptyOrNull(datetime)) {
curr = new Date();
}else {
curr = datetime;
}
var first = curr.getDate() - curr.getDay();
var last = first + 6;
var lastDay = new Date(curr.setDate(last));
var month=lastDay.getMonth()+1;
var day=lastDay.getDate();
if (month<10){
month='0'+month
}
if (day<10){
day='0'+day
}
const opt = {
"Y+": lastDay.getFullYear().toString(), // 年
"m+": month+"", // 月
"d+": day+"", // 日
"H+": lastDay.getHours().toString(), // 时
"M+": lastDay.getMinutes().toString(), // 分
"S+": lastDay.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt
}
5、对时间进行加减
//对时间进行加减
function getTimeOpera(fmt,date,value) {
var timeArr = value.split("|")
var y = timeArr[0];
var m = timeArr[1];
var d = timeArr[2];
var h = timeArr[3];
var mm = timeArr[4];
var s = timeArr[5];
var nY=date.getFullYear().toString();
var nM=(date.getMonth() + 1).toString();
var nD=date.getDate().toString();
var nH=date.getHours().toString();
var nMM=date.getMinutes().toString();
var nS=date.getSeconds().toString();
var newTimeStr=nY+"-"+nM+"-"+nD+" "+nH+":"+nMM+":"+nS;
var newTime=new Date(newTimeStr);
if (y!=0){
newTime.setFullYear(newTime.getFullYear() + y);
}
if (m!=0){
newTime.setMonth(newTime.getMonth() + parseInt(m));
}
if (d!=0){
newTime.setDate(newTime.getDate() + parseInt(d));
}
if (h!=0){
newTime.setHours(newTime.getHours() + h);
}
if (mm!=0){
newTime.setMinutes(newTime.getMinutes() + mm);
}
if (s!=0){
newTime.setSeconds(newTime.getSeconds() + s);
}
const opt = {
"Y+": newTime.getFullYear().toString(), // 年
"m+": (newTime.getMonth()+1).toString(), // 月
"d+": newTime.getDate().toString(), // 日
"H+": newTime.getHours().toString(), // 时
"M+": newTime.getMinutes().toString(), // 分
"S+": newTime.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt;
}
//时间格式输出
function dateFormat(fmt, date) {
let ret;
if (isEmptyOrNull(date)) {
date = new Date()
}
if (isEmptyOrNull(fmt)) {
fmt = 'YYYY-mm-dd HH:MM:SS'
}
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt;
}
//判断非空
function isEmptyOrNull(v){
return (v===undefined || v==="" || v===null || v===NaN);
}
注意:参数fmt 表示返回格式:例如YYYY-mm-dd HH:MM:SS或者YYYY-mm-dd,等
参数date 表示传输时间,如果这个参数为空,那么会默认当前时间