eiya
TypeScript icon, indicating that this package has built-in type declarations

2.0.1 • Public • Published

Eiya

一个日期常用处理方法的集合,包括格式化,解析,加减,比较等方法

install

$ yarn add eiya

or

$ npm install eiya

usage

import Eiya from 'eiya'; //或者安装后直接通过script脚本引用dist目录下编译后的文件

// 实例链式调用
const date = new Eiya();
date.add(1, 'year').subtract('1', 'month').startOf('date');

// 静态方法使用
const now = new Date();
Eiya.startOf(now, 'date');

api

静态方法

Eiya.format(date, fmt, locale)

  • 概述

    格式化日期到指定格式字符串形式

  • 参数

    @param {Date} date 被格式化的日期对象

    @param {String} fmt 格式化字符串, 支持的格式请参考格式说明

    @param {LocaleSymbol} locale 当次格式化使用的格式定义

  • 示例

    Eiya.format(new Date(2020, 10, 10, 12, 14, 45, 453), 'yyyy/MM/dd HH:mm:ss SSS');
    // 2020/11/10 12:14:45 453
    Eiya.format(new Date(2020, 10, 10, 12, 14, 45, 453), 'EEE', {EEE: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']});
    // Tu

Eiya.parse(str, fmt, locale)

  • 概述

    将指定格式的日期字符串解析成日期对象

  • 参数

    @param {String} str 表示日期的字符串

    @param {String} fmt 日期字符串的格式

    @param {LocaleSymbol} locale 当次解析使用的格式定义

  • 示例

    Eiya.parse('2020/11/10 12:14:45 453', 'yyyy/MM/dd HH:mm:ss SSS')
    // 2020-11-10T04:14:45.453Z  这是0时区表示时间,所以小时差了8小时

Eiya.isLeapYear(year)

  • 概述

    判断指定年份是否是闰年

  • 参数

    @param {Number} year 需要判断的年份

  • 示例

    Eiya.isLeapYear(2020) // true

Eiya.daysInMonth(year, month)

  • 概述

    判断指定月份有多少天

  • 参数

    @param {Number} year 年份,用于判断是否是闰年

    @param {Number} month 月份,1月份为0

  • 示例

    Eiya.daysInMonth(2020, 1) // 29

Eiya.isValidDate(year, month, date, hour, minute, second, millisecond)

  • 概述

    判断指定的年月日时分秒毫秒是否是一个真实合法的时间

  • 参数

    依次是年,月(从0开始),日,时,分,秒,毫秒

  • 示例

    Eiya.isValidDate(2020, 3, 32, 12, 12, 23, 345) // false

Eiya.isSame(date1, date2, option)

  • 概述

    判断两个日期是否相同

  • 参数

    @param {Date} date1, date2 待比较Date对象

    @option {String, Object} 比较选项设置

    • option.precision 比较精度,支持year, month, date, hour, minute, second, millisecond, week。默认为millisecond
    • option.easy 是否只比较设置的精度,不考虑前置时间,如只比较月份而不用考虑年份
    • option 也可以传字符串,代表option.precision
  • 示例

    const date1 = new Date(2020, 10, 15);
    const date2 = new Date(2020, 8, 15);
    Eiya.isSame(date1, date2, 'date') // false
    Eiya.isSame(date1, date2, {precision: 'date', easy: true}) // true

Eiya.isBetween(date, start, end, option)

  • 概述

    判断date是否处于start,end之间

  • 参数

    @param {Date} date, start, end 分别是被判断时间,区间起始时间,区间结束时间

    @option {String,Object} 比较选项设置

    • option.precision 同 Eiya.isSame 中的设置
    • option.easy 同 Eiya.isSame 中的设置
    • option.boundary 是否包含左右边界,默认 [] 请参考数学区间定义
  • 示例

    const date = new Date(2020, 10, 15);
    const start = new Date(2020, 10, 15);
    const end = new Date(2020, 11, 15);
    Eiya.isBetween(date, start, end, 'date') // true
    Eiya.isBetween(date, start, end, {precision: 'date', boundary: '(]'}) // false

Eiya.isAfter(date, target, option)

  • 概述

    判断date日期是否在target日期以后

  • 参数

    @param {Date} date, target 比较的日期对象

    @param option 参数同 Eiya.isSame 支持 precision, easy, self

    • option.self 表示是否包含target日期

Eiya.isBefore(date, target, option)

  • 概述

    判断date日期是否在target日期以前。其余同 Eiya.isAfter

Eiya.add(date, addend, option)

  • 概述

    对date日期进行加法运算

  • 参数

    @param {Date} date 被运算的日期对象

    @param {Number} addend 增量

    @param {String, Object} option 运算选项设置

    • option.precision 需要在哪个单位上进行加运算,支持 year, month, date, hour, minute, second, millisecond, week
    • option.end 是否月末对齐
    • option.overstep 超过月份最大日期,是否跨到下一月
  • 示例

    const date = new Date(2020, 1, 29, 12, 23, 24, 456);
    Eiya.add(date, 1, 'year') // 2021-02-28T04:23:24.456Z
    Eiya.add(date, 1, {precision: 'year', end: false, overstep: true}) //2021-03-01T04:23:24.456Z
    Eiya.add(date, 1, 'month') //2020-03-31T04:23:24.456Z

Eiya.subtract(date, subtrahend, option)

  • 概述

    相当于 Eiya.add 方法参数 addend 为负数。其它一致

Eiya.startOf(date, precision)

  • 概述

    返回日期指定精度的起始时间

  • 参数

    @param {Date} date 参考日期对象

    @param {String} precision 支持year, month, date, hour, minute, second, week

  • 示例

    const date = new Date(2020, 1, 12, 12, 24, 45, 235);
    Eiya.startOf(date, 'year') // 2019-12-31T16:00:00.000Z 转化为当前东八时间,就是2020/01/01 00:00:00 000

Eiya.endOf(date, precision)

  • 概述

    返回日期指定精度的最后时刻,其它和 Eiya.startOf 相同

  • 示例

    const date = new Date(2020, 1, 12, 12, 24, 45, 235);
    Eiya.endOf(date, 'year') // 2020-12-31T15:59:59.999Z 转化为当前东八时间,就是2020/12/31 23:59:59.999

Eiya.clone(date)

  • 概述

    返回一个和参数日期对象表示相同时间的新日期对象

Eiya.compare(date1, date2, option)

  • 概述

    在指定精度下,date1如果在date2之前,返回-1, date1和date2相同返回0, date1在date2之后,返回1

  • 参数

    option和 Eiya.isAfter 有相同的意义

Eiya.max(option, ...args)

  • 概述

    返回参数日期列表中最大的日期,第一个参数可以是精度设置,支持 precisioneasy

Eiya.min(option, ...args)

  • 概述

    返回参数日期列表中最小的日期,第一个参数可以是精度设置,支持 precisioneasy

实例方法

实例方法和方法基本一致,没有,parse, max, min 等方法,实例方法接收的日期参数不仅可以是Date实例对象,还可以是Eiya实例对象。并且操作型的方法,add, subtract, startOf, endOf, clone 支持链式调用

格式说明

符号 说明
yyyy 完整年份
yy 19**年的时候返回后两位数字
M 月份
d 日期
H 24小时制的小时
h 12小时制的小时, 需要配制am/pm来标记上午下午
m 分钟
s
S 毫秒
E 一周中的天数,从0开始,周日为第一天
a am/pm
A AM/PM

1~2位的基本是数字格式的,1位不补前置0,2位补前置0。默认非数字的格式定义如下

格式 定义
MMM Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
MMMM January, February, March, April, May, June, July, August, September, October, November, December
MMMMM 一, 二, 三, 四, 五, 六, 七, 八, 九, 十, 十一, 十二
EEE Sun, Mon, Tue, Wed, Thu, Fri, Sat
EEEE Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
EEEEE 日, 一, 二, 三, 四, 五, 六
a am, pm
A AM, PM

Readme

Keywords

Package Sidebar

Install

npm i eiya

Weekly Downloads

11

Version

2.0.1

License

ISC

Unpacked Size

214 kB

Total Files

9

Last publish

Collaborators

  • leeqq