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>
    
  • 相关阅读:
    SQL 函数:Aggregate、Scalar函数介绍
    SQL 用于各种数据库的数据类型:MySQL、SQLsever
    SQL 通用数据类型解析
    SQL NULL 函数:使用方法及案例剖析
    SpringBoot的配置文件
    SpringBoot简介及快速入门
    本地仓库和远程仓库分支回退到指定的历史版本(idea)
    maven配置阿里云镜像仓库
    SSM三大框架整合-分模块版本
    Java程序调用Oracle存储过程和存储函数
  • 原文地址:https://www.cnblogs.com/conglvse/p/9752442.html
Copyright © 2011-2022 走看看