Eiya
一个日期常用处理方法的集合,包括格式化,解析,加减,比较等方法
install
$ yarn add eiya
or
$ npm install eiya
usage
import Eiya from 'eiya';
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');
Eiya.format(new Date(2020, 10, 10, 12, 14, 45, 453), 'EEE', {EEE: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']});
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')
Eiya.isLeapYear(year)
Eiya.daysInMonth(year, month)
-
概述
判断指定月份有多少天
-
参数
@param {Number} year 年份,用于判断是否是闰年
@param {Number} month 月份,1月份为0
-
示例
Eiya.daysInMonth(2020, 1)
Eiya.isValidDate(year, month, date, hour, minute, second, millisecond)
-
概述
判断指定的年月日时分秒毫秒是否是一个真实合法的时间
-
参数
依次是年,月(从0开始),日,时,分,秒,毫秒
-
示例
Eiya.isValidDate(2020, 3, 32, 12, 12, 23, 345)
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')
Eiya.isSame(date1, date2, {precision: 'date', easy: 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')
Eiya.isBetween(date, start, end, {precision: 'date', boundary: '(]'})
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)
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')
Eiya.add(date, 1, {precision: 'year', end: false, overstep: true})
Eiya.add(date, 1, 'month')
Eiya.subtract(date, subtrahend, option)
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')
Eiya.endOf(date, precision)
-
概述
返回日期指定精度的最后时刻,其它和 Eiya.startOf 相同
-
示例
const date = new Date(2020, 1, 12, 12, 24, 45, 235);
Eiya.endOf(date, 'year')
Eiya.clone(date)
-
概述
返回一个和参数日期对象表示相同时间的新日期对象
Eiya.compare(date1, date2, option)
Eiya.max(option, ...args)
Eiya.min(option, ...args)
实例方法
实例方法和方法基本一致,没有,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 |