小程序 日期方法

页面代码:

<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
}
posted @ 2025-11-20 16:58  微宇宙  阅读(27)  评论(0)    收藏  举报