zoukankan      html  css  js  c++  java
  • js 获取时间

    项目中常用的取时间的方法

    util/date-util.js

    const oneDay = 86400000;//一天1000*60*60*24毫秒

    //格式化日期

    function formatDate(date,zw=false) {
      let y = date.getFullYear(),
        m = date.getMonth() + 1,
        d = date.getDate();
      m = m < 10 ? "0" + m : m;
      d = d < 10 ? "0" + d : d;
      if(zw){
        return y + "年" + m + "月" + d+"日";
      }else{
        return y + "-" + m + "-" + d;
      }
    };

    //获取当天时间

    export const getToday = function (flag) {
      if(flag==='zw'){
        return formatDate(new Date(),true);
      }else{
        return formatDate(new Date());
      }
    };

    //获取当前星期

    export const getWeek = function (day) {
      let date = day === undefined ? new Date() : new Date(day);
      let sz=date.getDay();
      let zw="日一二三四五六".charAt(sz);
      return{sz,zw}
    };

    //获取当前月的第一天和最后一天

    export const getCurMonth = function (day) {
      let date = day === undefined ? new Date() : new Date(day);
      let currentMonth = date.getMonth();
      let nextMonth = ++currentMonth;
      let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
      let lastDay = formatDate(new Date(nextMonthFirstDay - oneDay));
      date.setDate(1);
      let firstDay = formatDate(date);
      return {lastDay, firstDay}
    };

    //获取本周的第一天和最后一天

    export const getCurWeek = function (day) {
      let date = day === undefined ? new Date() : new Date(day);
      let first = date - (date.getDay() - 1) * oneDay;
      let last = first + oneDay * 6;
      let lastDay = formatDate(new Date(last));
      let firstDay = formatDate(new Date(first))
      return {lastDay, firstDay}
    };

    //获取时间区间内每一天

    export const getEveryDay = function (startTime, endTime=new Date()) {
      let days = [];
      for (let i = Date.parse(startTime); i <= Date.parse(endTime); i += oneDay) {
        let day = formatDate(new Date(i));
        days.push(day);
      }
      return days;
    };

    //获取最近第几天

    export const getTargetDay = function (day,n) {//n表示最近几天,负数为day前几天
      let date;
      if(n===undefined){
        n=day;
        date=new Date()
      }else{
        date = new Date(day);
      }
      let targetDay=formatDate(new Date(date.getTime() + oneDay*n));
      return targetDay;
    };

    //农历 showCal

    var CalendarData = new Array(100);
    var madd = new Array(12);
    var tgString = "甲乙丙丁戊己庚辛壬癸";
    var dzString = "子丑寅卯辰巳午未申酉戌亥";
    var numString = "一二三四五六七八九十";
    var monString = "正二三四五六七八九十冬腊";
    var weekString = "日一二三四五六";
    var sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
    var cYear, cMonth, cDay, TheDate;
    CalendarData = new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95);
    madd[0] = 0;
    madd[1] = 31;
    madd[2] = 59;
    madd[3] = 90;
    madd[4] = 120;
    madd[5] = 151;
    madd[6] = 181;
    madd[7] = 212;
    madd[8] = 243;
    madd[9] = 273;
    madd[10] = 304;
    madd[11] = 334;
    
    export const getLunarCalendar = function () {
      var D = new Date();
      var yy = D.getFullYear();
      var mm = D.getMonth() + 1;
      var dd = D.getDate();
      var ww = D.getDay();
      var ss = parseInt(D.getTime() / 1000);
      if (yy < 100) yy = "19" + yy;
      return GetLunarDay(yy, mm, dd);
    };
    function GetBit(m, n) {
      return (m >> n) & 1;
    };
    //农历转换
    function e2c() {
      TheDate = (arguments.length != 3) ? new Date() : new Date(arguments[0], arguments[1], arguments[2]);
      var total, m, n, k;
      var isEnd = false;
      var tmp = TheDate.getYear();
      if (tmp < 1900) {
        tmp += 1900;
      }
      total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + madd[TheDate.getMonth()] + TheDate.getDate() - 38;
    
      if (TheDate.getYear() % 4 == 0 && TheDate.getMonth() > 1) {
        total++;
      }
      for (m = 0; ; m++) {
        k = (CalendarData[m] < 0xfff) ? 11 : 12;
        for (n = k; n >= 0; n--) {
          if (total <= 29 + GetBit(CalendarData[m], n)) {
            isEnd = true;
            break;
          }
          total = total - 29 - GetBit(CalendarData[m], n);
        }
        if (isEnd) break;
      }
      cYear = 1921 + m;
      cMonth = k - n + 1;
      cDay = total;
      if (k == 12) {
        if (cMonth == Math.floor(CalendarData[m] / 0x10000) + 1) {
          cMonth = 1 - cMonth;
        }
        if (cMonth > Math.floor(CalendarData[m] / 0x10000) + 1) {
          cMonth--;
        }
      }
    };
    function GetcDateString() {
      var tmp = "";
      //显示农历年:( 如:甲午(马)年 )
      tmp+=tgString.charAt((cYear-4)%10);
      tmp+=dzString.charAt((cYear-4)%12);
      /*tmp+="(";
        tmp+=sx.charAt((cYear-4)%12);*/
      tmp+="年  ";
      if (cMonth < 1) {
        tmp += "(闰)";
        tmp += monString.charAt(-cMonth - 1);
      } else {
        tmp += monString.charAt(cMonth - 1);
      }
      tmp += "月";
      tmp += (cDay < 11) ? "初" : ((cDay < 20) ? "十" : ((cDay < 30) ? "廿" : "三十"));
      if (cDay % 10 != 0 || cDay == 10) {
        tmp += numString.charAt((cDay - 1) % 10);
      }
      return tmp;
    };
    
    function GetLunarDay(solarYear, solarMonth, solarDay) {
    //solarYear = solarYear<1900?(1900+solarYear):solarYear;
      if (solarYear < 1921 || solarYear > 2020) {
        return "";
      } else {
        solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1) : 11;
        e2c(solarYear, solarMonth, solarDay);
        return GetcDateString();
      }
    };

    页面调用

    <template>
    <div>
          <p>当天时间:{{today1}}({{today}})</p>
          <p>农历:{{nl}}</p>
          <p>星期{{week.zw}}({{week.sz}})</p>
          <p>本月:{{curMonth.firstDay}} ~ {{curMonth.lastDay}}</p>
          <p>本周:{{curWeek.firstDay}} ~ {{curWeek.lastDay}}</p>
          <p>本周一至今:<span v-for="day in curWeekEveryDay">{{day}},</span></p>
          <p>7天前:{{lastweek}}</p>
    </div>
    </template>
    
    <script>
      import {getToday,getWeek,getCurMonth,getCurWeek,getEveryDay,getTargetDay,getLunarCalendar} from '@/util/date-util'
    
      export default {
          name: "DateTest",
          data() {
              return {
                today:'',
                today1:'',
                nl:'',
                week:'',
                curMonth:'',
                curWeek:'',
                curWeekEveryDay:[],
                lastweek:'',
              }
          },
          created: function () {
            this.init();
          },
          methods: {
            init(){
              this.today=getToday();
              this.today1=getToday('zw');
              this.nl=getLunarCalendar();
              this.week=getWeek();
              this.curMonth=getCurMonth();
              this.curWeek=getCurWeek();
              this.curWeekEveryDay=getEveryDay(getCurWeek().firstDay);
              this.lastweek=getTargetDay('-7');
            }
          }
      }
    </script>
    
  • 相关阅读:
    三元操作符的类型务必一致
    a++ 和 ++a 的区别
    TCP/IP四层协议模型与ISO七层模型
    CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
    修改gcc/g++默认include路径
    js中Math.random()生成指定范围数值的随机数
    在 QML 中创建 C++ 导入类型的实例
    QML从文件加载组件简单示例
    Android插件化开发---执行未安装apk中的Service
    游戏开发热门技术浅析
  • 原文地址:https://www.cnblogs.com/conglvse/p/9752442.html
Copyright © 2011-2022 走看看