|
@@ -1,380 +0,0 @@
|
|
|
-/**
|
|
|
- * 提供时间操作函数
|
|
|
- * @Author: huangjq
|
|
|
- * @Date: 2019-02-18
|
|
|
- */
|
|
|
-// let moment = require("moment");
|
|
|
-import moment from "moment";
|
|
|
-moment.locale("zh-cn");
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取当前的日期
|
|
|
- * @return {String} 当前日期
|
|
|
- */
|
|
|
-moment.prototype.getCurrentDate = function() {
|
|
|
- // 获取当天时间
|
|
|
- let _date = new Date(),
|
|
|
- _str = "";
|
|
|
-
|
|
|
- // 日期
|
|
|
- _str += _date.getFullYear() + "年";
|
|
|
- _str += _date.getMonth() + 1 + "月";
|
|
|
- _str += _date.getDate() + "日";
|
|
|
-
|
|
|
- return _str;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 求两个时间的天数差 日期格式为 YYYY-MM-dd
|
|
|
- * @param {String} DateOne 第一个日期
|
|
|
- * @param {String} DateTwo 第二个日期
|
|
|
- * @return {Number} 日期天数差
|
|
|
- */
|
|
|
-moment.prototype.daysBetween = (DateOne, DateTwo) => {
|
|
|
- let OneMonth = DateOne.substring(5, DateOne.lastIndexOf("-"));
|
|
|
- let OneDay = DateOne.substring(DateOne.length, DateOne.lastIndexOf("-") + 1);
|
|
|
- let OneYear = DateOne.substring(0, DateOne.indexOf("-"));
|
|
|
- let TwoMonth = DateTwo.substring(5, DateTwo.lastIndexOf("-"));
|
|
|
- let TwoDay = DateTwo.substring(DateTwo.length, DateTwo.lastIndexOf("-") + 1);
|
|
|
- let TwoYear = DateTwo.substring(0, DateTwo.indexOf("-"));
|
|
|
- let cha =
|
|
|
- (Date.parse(OneMonth + "/" + OneDay + "/" + OneYear) - Date.parse(TwoMonth + "/" + TwoDay + "/" + TwoYear)) /
|
|
|
- 86400000;
|
|
|
-
|
|
|
- return Math.abs(cha);
|
|
|
-};
|
|
|
-
|
|
|
-/***
|
|
|
- * 获得本月的起止时间
|
|
|
- * @return {Array} 本月的起止时间
|
|
|
- */
|
|
|
-moment.prototype.getCurrentMonth = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = new Array();
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //获得当前月份0-11
|
|
|
- let currentMonth = currentDate.getMonth();
|
|
|
- //获得当前年份4位年
|
|
|
- let currentYear = currentDate.getFullYear();
|
|
|
- //求出本月第一天
|
|
|
- let firstDay = new Date(currentYear, currentMonth, 1);
|
|
|
-
|
|
|
- //当为12月的时候年份需要加1
|
|
|
- //月份需要更新为0 也就是下一年的第一个月
|
|
|
- if (currentMonth == 11) {
|
|
|
- currentYear++;
|
|
|
- currentMonth = 0; //就为
|
|
|
- } else {
|
|
|
- //否则只是月份增加,以便求的下一月的第一天
|
|
|
- currentMonth++;
|
|
|
- }
|
|
|
-
|
|
|
- //一天的毫秒数
|
|
|
- let millisecond = 1000 * 60 * 60 * 24;
|
|
|
- //下月的第一天
|
|
|
- let nextMonthDayOne = new Date(currentYear, currentMonth, 1);
|
|
|
- //求出上月的最后一天
|
|
|
- let lastDay = new Date(nextMonthDayOne.getTime() - millisecond);
|
|
|
-
|
|
|
- //添加至数组中返回
|
|
|
- startStop.push(firstDay);
|
|
|
- startStop.push(lastDay);
|
|
|
- //返回
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 得到本季度开始的月份
|
|
|
- * @param {number} month 需要计算的月份
|
|
|
- * @return {number} 月份
|
|
|
- **/
|
|
|
-moment.prototype.getQuarterSeasonStartMonth = function(month) {
|
|
|
- let spring = 1; //春
|
|
|
- let summer = 4; //夏
|
|
|
- let fall = 7; //秋
|
|
|
- let winter = 10; //冬
|
|
|
- if (month) {
|
|
|
- month = new Date().getMonth() + 1;
|
|
|
- }
|
|
|
-
|
|
|
- //月份从0-11
|
|
|
- if (month < 4) {
|
|
|
- return spring;
|
|
|
- }
|
|
|
-
|
|
|
- if (month < 7) {
|
|
|
- return summer;
|
|
|
- }
|
|
|
-
|
|
|
- if (month < 10) {
|
|
|
- return fall;
|
|
|
- }
|
|
|
-
|
|
|
- return winter;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获得该月的天数
|
|
|
- * @param {number} year 年份
|
|
|
- * @param {number} month 月份
|
|
|
- * @return {number} 天数
|
|
|
- **/
|
|
|
-moment.prototype.getMonthDays = function(year, month) {
|
|
|
- month--;
|
|
|
- //本月第一天 1-31
|
|
|
- let relativeDate = new Date(year, month, 1);
|
|
|
- //获得当前月份0-11
|
|
|
- let relativeMonth = relativeDate.getMonth();
|
|
|
- //获得当前年份4位年
|
|
|
- let relativeYear = relativeDate.getFullYear();
|
|
|
-
|
|
|
- //当为12月的时候年份需要加1
|
|
|
- //月份需要更新为0 也就是下一年的第一个月
|
|
|
- if (relativeMonth == 11) {
|
|
|
- relativeYear++;
|
|
|
- relativeMonth = 0;
|
|
|
- } else {
|
|
|
- //否则只是月份增加,以便求的下一月的第一天
|
|
|
- relativeMonth++;
|
|
|
- }
|
|
|
- //一天的毫秒数
|
|
|
- let millisecond = 1000 * 60 * 60 * 24;
|
|
|
- //下月的第一天
|
|
|
- let nextMonthDayOne = new Date(relativeYear, relativeMonth, 1);
|
|
|
- //返回得到上月的最后一天,也就是本月总天数
|
|
|
- return new Date(nextMonthDayOne.getTime() - millisecond).getDate();
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获得本季度的起止日期
|
|
|
- * @return {Array} 日期数组
|
|
|
- */
|
|
|
-moment.prototype.getCurrentSeason = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = new Array();
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //获得当前月份0-11
|
|
|
- let currentMonth = currentDate.getMonth();
|
|
|
- //获得当前年份4位年
|
|
|
- let currentYear = currentDate.getFullYear();
|
|
|
- //获得本季度开始月份
|
|
|
- let quarterSeasonStartMonth = this.getQuarterSeasonStartMonth(currentMonth + 1);
|
|
|
- //获得本季度结束月份
|
|
|
- let quarterSeasonEndMonth = quarterSeasonStartMonth + 2;
|
|
|
-
|
|
|
- //获得本季度开始的日期
|
|
|
- let quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth - 1, 1);
|
|
|
- //获得本季度结束的日期
|
|
|
- let quarterSeasonEndDate = new Date(
|
|
|
- currentYear,
|
|
|
- quarterSeasonEndMonth - 1,
|
|
|
- this.getMonthDays(currentYear, quarterSeasonEndMonth++)
|
|
|
- );
|
|
|
- //加入数组返回
|
|
|
- startStop.push(quarterSeasonStartDate);
|
|
|
- startStop.push(quarterSeasonEndDate);
|
|
|
- //返回
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-/***
|
|
|
- * 得到本年的起止日期
|
|
|
- * @return {Object} 起止日期数组
|
|
|
- */
|
|
|
-moment.prototype.getCurrentYear = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = new Array();
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //获得当前年份4位年
|
|
|
- let currentYear = currentDate.getFullYear();
|
|
|
-
|
|
|
- //本年第一天
|
|
|
- let currentYearFirstDate = new Date(currentYear, 0, 1);
|
|
|
- //本年最后一天
|
|
|
- let currentYearLastDate = new Date(currentYear, 11, 31);
|
|
|
- //添加至数组
|
|
|
- startStop.push(currentYearFirstDate);
|
|
|
- startStop.push(currentYearLastDate);
|
|
|
- //返回
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 返回上一个月的第一天
|
|
|
- * @param {number} year 年
|
|
|
- * @param {number} month 月
|
|
|
- * @return {Date} 日期
|
|
|
- **/
|
|
|
-moment.prototype.getPriorMonthFirstDay = function(year, month) {
|
|
|
- if (!year) {
|
|
|
- year = new Date().getFullYear();
|
|
|
- }
|
|
|
- if (!month) {
|
|
|
- month = new Date().getMonth();
|
|
|
- } else {
|
|
|
- month--;
|
|
|
- }
|
|
|
- //年份为0代表,是本年的第一月,所以不能减
|
|
|
- if (!month) {
|
|
|
- month = 11; //月份为上年的最后月份
|
|
|
- year--; //年份减1
|
|
|
- return new Date(year, month, 1);
|
|
|
- }
|
|
|
- //否则,只减去月份
|
|
|
- month--;
|
|
|
- return new Date(year, month, 1);
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获得上一月的起止日期
|
|
|
- * @return {Array} 上个月起止日期
|
|
|
- **/
|
|
|
-moment.prototype.getPreviousMonth = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = [];
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //获得当前月份0-11
|
|
|
- let currentMonth = currentDate.getMonth();
|
|
|
- //获得当前年份4位年
|
|
|
- let currentYear = currentDate.getFullYear();
|
|
|
- //获得上一个月的第一天
|
|
|
- let priorMonthFirstDay = this.getPriorMonthFirstDay(currentYear, currentMonth + 1);
|
|
|
- //获得上一月的最后一天
|
|
|
- let priorMonthLastDay = new Date(
|
|
|
- priorMonthFirstDay.getFullYear(),
|
|
|
- priorMonthFirstDay.getMonth(),
|
|
|
- this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth() + 1)
|
|
|
- );
|
|
|
- //添加至数组
|
|
|
- startStop.push(priorMonthFirstDay);
|
|
|
- startStop.push(priorMonthLastDay);
|
|
|
- //返回
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获得上一周的起止日期
|
|
|
- * @return {Array} 上一周起止日期
|
|
|
- **/
|
|
|
-moment.prototype.getPreviousWeek = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = new Array();
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //返回date是一周中的某一天
|
|
|
- let week = currentDate.getDay();
|
|
|
- //返回date是一个月中的某一天
|
|
|
- let month = currentDate.getDate();
|
|
|
- //一天的毫秒数
|
|
|
- let millisecond = 1000 * 60 * 60 * 24;
|
|
|
- //减去的天数
|
|
|
- let minusDay = week ? week - 1 : 6;
|
|
|
- //获得当前周的第一天
|
|
|
- let currentWeekDayOne = new Date(currentDate.getTime() - millisecond * minusDay);
|
|
|
- //上周最后一天即本周开始的前一天
|
|
|
- let priorWeekLastDay = new Date(currentWeekDayOne.getTime() - millisecond);
|
|
|
- //上周的第一天
|
|
|
- let priorWeekFirstDay = new Date(priorWeekLastDay.getTime() - millisecond * 6);
|
|
|
-
|
|
|
- //添加至数组
|
|
|
- startStop.push(priorWeekFirstDay);
|
|
|
- startStop.push(priorWeekLastDay);
|
|
|
-
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取上季度的起始日期
|
|
|
- * @param {number} year 这个年应该是运算后得到的当前本季度的年份
|
|
|
- * @param {number} month 这个应该是运算后得到的当前季度的开始月份
|
|
|
- * @return {Date} 上季度的起始日期
|
|
|
- * */
|
|
|
-moment.prototype.getPriorSeasonFirstDay = function(year, month) {
|
|
|
- if (!year) {
|
|
|
- year = new Date().getFullYear();
|
|
|
- }
|
|
|
- if (!month) {
|
|
|
- month = this.getQuarterSeasonStartMonth(new Date().getMonth()) - 1;
|
|
|
- } else {
|
|
|
- month--;
|
|
|
- month = this.getQuarterSeasonStartMonth(month) - 1;
|
|
|
- }
|
|
|
- let spring = 0; //春
|
|
|
- let summer = 3; //夏
|
|
|
- let fall = 6; //秋
|
|
|
- let winter = 9; //冬
|
|
|
- //月份从0-11
|
|
|
- switch (
|
|
|
- month //季度的真实月份
|
|
|
- ) {
|
|
|
- case spring:
|
|
|
- //如果是第一季度则应该到去年的冬季
|
|
|
- year--;
|
|
|
- month = winter;
|
|
|
- break;
|
|
|
- case summer:
|
|
|
- month = spring;
|
|
|
- break;
|
|
|
- case fall:
|
|
|
- month = summer;
|
|
|
- break;
|
|
|
- case winter:
|
|
|
- month = fall;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return new Date(year, month, 1);
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取上季度的起止日期
|
|
|
- * @return {Array} 上季度的起止日期
|
|
|
- **/
|
|
|
-moment.prototype.getPreviousSeason = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = new Array();
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //获得当前月份0-11
|
|
|
- let currentMonth = currentDate.getMonth();
|
|
|
- //获得当前年份4位年
|
|
|
- let currentYear = currentDate.getFullYear();
|
|
|
- //上季度的第一天
|
|
|
- let priorSeasonFirstDay = this.getPriorSeasonFirstDay(currentYear, currentMonth + 1);
|
|
|
- //上季度的最后一天
|
|
|
- let priorSeasonLastDay = new Date(
|
|
|
- priorSeasonFirstDay.getFullYear(),
|
|
|
- priorSeasonFirstDay.getMonth() + 2,
|
|
|
- this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 1 + 2)
|
|
|
- );
|
|
|
- //添加至数组
|
|
|
- startStop.push(priorSeasonFirstDay);
|
|
|
- startStop.push(priorSeasonLastDay);
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取去年的起止日期
|
|
|
- * @return {Array} 去年的起止日期
|
|
|
- **/
|
|
|
-moment.prototype.getPreviousYear = function() {
|
|
|
- //起止日期数组
|
|
|
- let startStop = new Array();
|
|
|
- //获取当前时间
|
|
|
- let currentDate = new Date();
|
|
|
- //获得当前年份4位年
|
|
|
- let currentYear = currentDate.getFullYear();
|
|
|
- currentYear--;
|
|
|
- let priorYearFirstDay = new Date(currentYear, 0, 1);
|
|
|
- let priorYearLastDay = new Date(currentYear, 11, this.getMonthDays(currentYear, 12));
|
|
|
- //添加至数组
|
|
|
- startStop.push(priorYearFirstDay);
|
|
|
- startStop.push(priorYearLastDay);
|
|
|
- return startStop;
|
|
|
-};
|
|
|
-
|
|
|
-export default moment;
|