webcito/js-date-extensions

dev-main 2023-02-10 07:49 UTC

This package is auto-updated.

Last update: 2024-09-10 11:22:39 UTC


README

JavaScript对象Date的一些实用扩展

目录

通用方法

setLocale

设置语言

// example
Date.setLocale('de');

getUnits

获取毫秒时间单位
@return {object}

// example
Date.getUnits();
// { year: 31536000000, month: 2628000000, week: 604800000, day: 86400000, hour: 3600000, minute: 60000, second: 1000 }

getDayNames

@param {boolean} abbreviation 默认 false
@returns {string[]}

// example
Date.getDayNames(true); // [ "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" ]

getMonthNames

@param {boolean} abbreviation 默认 false
@returns {string[]}

// example
Date.getMonthNames(true); // [ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]

操作Date对象的方法

addDays

将指定天数加到日期上
@param {number} days
@return {Date}

// example
let date = new Date('2022-11-01');
date.addDays(4); // 2022-11-05

subDays

从日期减去指定天数
@param {number} days
@returns {Date}

// example
let date = new Date('2022-11-01');
date.subDays(4); // 2022-10-28

addMonths

将指定月份数加到日期上
@param {number} months
@returns {Date}

// example
let date = new Date('2022-11-01');
date.addMonths(4); // 2023-03-01

subMonths

从日期减去指定月份数
@param {number} months
@returns {Date}

// example
let date = new Date('2022-11-01');
date.subMonths(1); // 2022-10-01

返回Date对象新实例的方法

clone

@returns {Date}

// example
let date = new Date('2022-11-01');
let cloneDate = date.clone(); // 2022-11-01

copy

返回Date对象的新实例(clone的别名)
@returns {Date}

// example
let date = new Date('2022-11-01');
let copyDate = date.copy(); // 2022-11-01

getFirstDayOfMonth

确定当前月份的第一天
@returns {Date}

// example
let date = new Date('2022-11-10');
let firstOfMonth = date.getFirstDayOfMonth(); // 2022-11-01

getLastDayOfMonth

确定当前月份的最后一天
@returns {Date}

// example
let date = new Date('2022-11-10');
let firstOfMonth = date.getLastDayOfMonth(); // 2022-11-30

getFirstDayOfWeek

确定当前日期的上一个星期一
@returns {Date}

// example
let date = new Date('2022-11-10');
let prevMonday = date.getFirstDayOfWeek(); // 2022-11-07

getLastDayOfWeek

确定当前日期的星期日
@returns {Date}

// example
let date = new Date('2022-11-10');
let nextSunday = date.getLastDayOfWeek(); // 2022-11-13

测试返回非日期对象的方法

isLeapYear

检查日期的年份是否为闰年
@returns {boolean}

// example
let date = new Date('2024-11-01');
if (date.isLeapYear()) // true
{
    // do something
}

isMonday, isTuesday, isWednesday, isThursday, isFriday, isSaturday, isSunday, isWeekend

检查日期是否为工作日
@returns {boolean}

// example
let date = new Date('2022-11-01');
date.isMonday(); // false
date.isTuesday(); // true
date.isWednesday(); // false
date.isThursday(); // false
date.isFriday(); // false
date.isSaturday(); // false
date.isSunday(); // false
date.isWeekend(); // false

getDaysInMonth

确定当前月份的天数
@returns {number}

// example
let date = new Date('2022-11-01');
date.getDaysInMonth(); // 30

getWeek

确定日期的日历周
@returns {number}

// example
let date = new Date('2022-11-01');
date.getWeek(); // 44 

getCountWeeks

确定两个日期之间的周数
@param {Date} toDate
@returns {number}

// example
let date = new Date('2022-11-01');
let toDate = new Date('2022-11-14');
date.getCountWeeks(toDate); // 2

getCountDays

确定两个日期之间的天数
@param {Date} toDate
@returns {number}

// example
let date = new Date('2022-11-01');
let toDate = new Date('2022-11-14');
date.getCountDays(toDate); // 14

fromNow

let date = new Date('2022-11-06 23:54:00');
// Now: 2022-11-07 05:55:00
date.fromNow(); // vor 6 Stunden

getDayName

let date = new Date('2022-11-06 23:54:00');
// Now: 2022-11-07 05:55:00
date.getDayName(); // Sonntag

getMonthName

let date = new Date('2022-11-06 23:54:00');
// Now: 2022-11-07 05:55:00
date.getMonthName(); // November

getMonthCalendar

返回一个月的所有数据作为数组
@return {*[]}

// example
let date = new Date('2022-11-01');
let result = date.getMonthCalendar();
// output result
[
    {
        "week": 44,
        "days": [
            "2022-10-31T23:00:00.000Z",
            "2022-11-01T23:00:00.000Z",
            "2022-11-02T23:00:00.000Z",
            "2022-11-03T23:00:00.000Z",
            "2022-11-04T23:00:00.000Z",
            "2022-11-05T23:00:00.000Z",
            "2022-11-06T23:00:00.000Z"
        ]
    },
    {
        "week": 45,
        "days": [
            "2022-11-07T23:00:00.000Z",
            "2022-11-08T23:00:00.000Z",
            "2022-11-09T23:00:00.000Z",
            "2022-11-10T23:00:00.000Z",
            "2022-11-11T23:00:00.000Z",
            "2022-11-12T23:00:00.000Z",
            "2022-11-13T23:00:00.000Z"
        ]
    },
    {
        "week": 46,
        "days": [
            "2022-11-14T23:00:00.000Z",
            "2022-11-15T23:00:00.000Z",
            "2022-11-16T23:00:00.000Z",
            "2022-11-17T23:00:00.000Z",
            "2022-11-18T23:00:00.000Z",
            "2022-11-19T23:00:00.000Z",
            "2022-11-20T23:00:00.000Z"
        ]
    },
    {
        "week": 47,
        "days": [
            "2022-11-21T23:00:00.000Z",
            "2022-11-22T23:00:00.000Z",
            "2022-11-23T23:00:00.000Z",
            "2022-11-24T23:00:00.000Z",
            "2022-11-25T23:00:00.000Z",
            "2022-11-26T23:00:00.000Z",
            "2022-11-27T23:00:00.000Z"
        ]
    },
    {
        "week": 48,
        "days": [
            "2022-11-28T23:00:00.000Z",
            "2022-11-29T23:00:00.000Z",
            "2022-11-30T23:00:00.000Z",
            "2022-12-01T23:00:00.000Z",
            "2022-12-02T23:00:00.000Z",
            "2022-12-03T23:00:00.000Z",
            "2022-12-04T23:00:00.000Z"
        ]
    }
]

getWeekCalendar

返回一周的所有数据作为数组
@return {*[]}

// example
let date = new Date('2023-02-09');
let result = date.getWeekCalendar();
// output result
[
    "2023-02-06T23:00:00.000Z",
    "2023-02-07T23:00:00.000Z",
    "2023-02-08T23:00:00.000Z",
    "2023-02-09T23:00:00.000Z",
    "2023-02-10T23:00:00.000Z",
    "2023-02-11T23:00:00.000Z",
    "2023-02-12T23:00:00.000Z",
]