小程序 日期方法
页面代码:
<picker mode="date" fields="month" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindDateChange"> <view class="picker"> 当前选择: {{date}} </view> </picker>
获取之前的天,月,年。反之也能获取之后天,月,年。获取前一天,就能获取前几天。也就能获取本周,上一周,上一个月,上一年,上一年的上一个月,以及上个月之前的今天,半年之前的今天,去年的今天。
初始化日期属性:
Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "H+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; }
/**
* 格式化日期
* @param {string|Date} date - 输入的日期,可以是字符串或 Date 对象
* @param {number} num - 要增加或减少的数量(正数为增加,负数为减少)
* @param {string} unit - 单位,可选值为 'year', 'month', 'day'
* @param {string} fmt - 返回的日期格式,默认为 "yyyy-MM-dd" // yyyy-MM-dd hh:mm:ss
* @returns {string} 格式化后的日期字符串
*/
const formatDate = (date, num = 0, unit = 'day', fmt = 'yyyy-MM-dd') => {
if (!date) return '';
const getDate = new Date(date);
// 根据单位调整日期
switch (unit) {
case 'year':
getDate.setFullYear(getDate.getFullYear() + num);
break;
case 'month':
getDate.setMonth(getDate.getMonth() + num);
break;
case 'day':
default:
getDate.setDate(getDate.getDate() + num);
break;
}
// 扩展 Date 原型以支持 format 方法
if (!Date.prototype.format) {
Date.prototype.format = function (fmt) {
const o = {
"M+": this.getMonth() + 1, // 月份
"d+": this.getDate(), // 日
"h+": this.getHours(), // 小时
"m+": this.getMinutes(), // 分
"s+": this.getSeconds(), // 秒
"q+": Math.floor((this.getMonth() + 3) / 3), // 季度
"S": this.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (let k in o) {
if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
};
}
return getDate.format(fmt);
};
获取本日方法如下:
获取本周方法如下:
获取本月方法如下:
获取本年方法如下:
获取上一日方法如下:
获取上一周方法如下:
获取上一月方法如下:
获取上一年方法如下:
获取下一天方法如下:
获取下一周方法如下:
export const getWeek = (date = '', fmt) => { let time = new Date(date); let stamp = time.getTime(); let currenDate = time.getDay(); let dateWeekList = []; for (let i = 0; i < 7; i++) { dateWeekList.push( new Date( stamp + 24 * 60 * 60 * 1000 * (i - ((currenDate + 6) % 7))) .format("yyyy-MM-dd") ); } return dateWeekList }
获取下一月方法如下:
获取下一年方法如下:
获取下一月初方法如下:
获取下一月末方法如下:
获取上一季度初末方法如下:
获取下一季度初末方法如下:
获取半年之前方法如下:
获取半年之后方法如下:
export const getWeek = (date = '', fmt) => {
let time = new Date(date);
let stamp = time.getTime();
let currenDate = time.getDay();
let dateWeekList = [];
for (let i = 0; i < 7; i++) {
dateWeekList.push(
new Date(
stamp + 24 * 60 * 60 * 1000 * (i - ((currenDate + 6) % 7)))
.format("yyyy-MM-dd")
);
}
return dateWeekList
}
如需转载原创文章,请标注原文地址,版权所有!
浙公网安备 33010602011771号