@shencom/utils-date
Version:
267 lines (216 loc) • 6.08 kB
Markdown
# @shencom/utils-date
> 日期时间处理工具
## Install
```sh
pnpm add @shencom/utils
# or
pnpm add @shencom/utils-date
```
## Basic Usage
```ts
import { FormatDate, FormatTime } from '@shencom/utils';
// import { FormatDate, FormatTime } from '@shencom/utils-date';
```
## Methods
**FormatDate**
- 说明: 日期格式化
- 类型: `(date?: number | Date | string, format?: string) => string`
- 参数:
- `date`: 时间,默认: `new Date()`
- `format`: 格式化规则,默认: `YYYY-MM-DD`
- 示例:
```ts
FormatDate(); // 2022-02-18
FormatDate(new Date()); // 2022-02-18
FormatDate(Date.now()); // 2022-02-18
```
**FormatTime**
- 说明: 时间格式化
- 类型: `(date?: number | Date | string, format?: string) => string`
- 参数:
- `date`: 时间,默认: `new Date()`
- `format`: 格式化规则,默认: `HH:mm:ss`
- 示例:
```ts
FormatTime(); // 14:50:52
FormatTime(new Date()); // 14:50:52
FormatTime(Date.now()); // 14:50:52
```
**FormatDateTime**
- 说明: 日期时间格式化
- 类型: `(date?: number | Date | string, format?: string) => string`
- 参数:
- `date`: 时间,默认: `new Date()`
- `format`: 格式化规则,默认: `YYYY-MM-DD HH:mm:ss`
- 示例:
```ts
FormatDateTime(); // 2022-02-18 14:50:52
FormatDateTime(new Date()); // 2022-02-18 14:50:52
FormatDateTime(Date.now()); // 2022-02-18 14:50:52
```
**FormatIntervalDate**
- 说明: 获取两个时间段的时间差
- 类型: `(start: number | string, end?: number | string | Date, unit?: dayjs.UnitType) => number`
- 参数:
- `start`: 开始时间
- `end`: 结束时间,默认: `new Date()`
- `unit`: 返回单位类型,默认: `minute`
- 示例:
```ts
FormatIntervalDate(1574254800000, 1574251200000); // 60
FormatIntervalDate('2022-02-18 16:00:00', '2022-02-18 17:00:00'); // 60
FormatIntervalDate('2022-02-18 17:00:00', '2022-02-18 16:00:00'); // 60
FormatIntervalDate('2022-02-18 16:00:00', '2022-02-18 16:10:00', 's'); // 600
```
**FormatSecond**
- 说明: 格式化秒 => 时分秒
- 类型: `(second: number, format?: string) => string`
- 参数:
- `second`: 时间,默认: `new Date()`
- `format`: 格式,默认: `h:m:s`
- 示例:
```ts
FormatSecond(1); // '0时00分01秒'
FormatSecond(60); // '0时01分00秒'
FormatSecond(60, 'm:s'); // '01分00秒'
FormatSecond(3600); // '1时00分00秒'
```
**Today**
- 说明: 返回今天日期
- 类型: `() => string`
- 示例:
```ts
Today(); // '2022-12-08'
```
**Yesterday**
- 说明: 返回昨天日期
- 类型: `() => string`
- 示例:
```ts
Yesterday(); // '2022-12-07'
```
**Tomorrow**
- 说明: 返回明天日期
- 类型: `() => string`
- 示例:
```ts
Tomorrow(); // '2022-12-09'
```
**PrevWeek**
- 说明: 返回上周(7 天前日期)
- 类型: `() => string`
- 示例:
```ts
PrevWeek(); // '2022-12-01'
```
**NextWeek**
- 说明: 返回下周(7 天后日期)
- 类型: `() => string`
- 示例:
```ts
NextWeek(); // '2022-12-15'
```
**PrevMonth**
- 说明: 返回上个月日期
- 类型: `() => string`
- 示例:
```ts
PrevMonth(); // '2022-11-08'
```
**NextMonth**
- 说明: 返回下个月日期
- 类型: `() => string`
- 示例:
```ts
NextMonth(); // '2023-01-08'
```
**PrevYear**
- 说明: 返回一年前日期
- 类型: `() => string`
- 示例:
```ts
PrevYear(); // '2023-12-08'
```
**NextYear**
- 说明: 返回一年后日期
- 类型: `() => string`
- 示例:
```ts
NextYear(); // '2023-12-08'
```
**IsAM**
- 说明: 当时间是否为上午
- 类型: `() => boolean`
- 示例:
```ts
IsAM(); // false
```
**IsPM**
- 说明: 当时间是否为下午
- 类型: `() => boolean`
- 示例:
```ts
IsPM(); // true
```
**IsLeapYear**
- 说明: 是否为闰年
- 描述: 闰年 366 天,平年 365 天
- 类型: `(year: number) => boolean`
- 参数:
- `year`: 年份
- 示例:
```ts
IsLeapYear(2000); // true
IsLeapYear(2004); // true
IsLeapYear(2100); // false
IsLeapYear(2020); // true
```
**GetWeek**
- 说明: 获得当前日期是周几
- 描述: 闰年 366 天,平年 365 天
- 类型: `(date?: Date, format?: string): string`
- 参数:
- `date`: 日期参数,默认当前日期
- `format`: 周格式化结果:“d”:日, “dd”:周日, “ddd”:星期日;默认“ddd”
- 示例:
```ts
const date = new Date('2022-12-08');
GetWeek(date, 'dd'); // '四'
GetWeek(date, 'ddd'); // '周四'
GetWeek(date, 'dddd'); // '星期四'
```
**PastTime**
- 说明: 获得过去时间的字符串显示
- 描述: 例如:刚刚,1 分钟前,1 小时前等
- 类型: `(date?: Date, format?: string): string`
- 参数:
- `date`: 日期或日期字符串
- `lang`: 字符串语言,zh 和 en,默认 zh \*
- 示例:
```ts
PastTime(new Date(Date.now() - 1000 * 2)); // '刚刚'
PastTime(Dayjs().subtract(12, 'hour').valueOf()); // '12小时前'
PastTime(Dayjs().subtract(1, 'day').valueOf()); // '1天前'
PastTime(Dayjs().subtract(1, 'month').valueOf()); // '1个月前'
PastTime(Dayjs().subtract(1, 'year').valueOf()); // '1年前'
```
**GetOverTime**
- 说明: 获得剩余时间的字符串显示
- 描述: 例如:1 天 10 小时 20 分钟 30 秒
- 类型: `(date?: Date, format?: string): string`
- 参数:
- `date`: 日期或日期字符串
- 示例:
```ts
GetOverTime(Dayjs().valueOf()); // '0天00时00分00秒';
GetOverTime(Dayjs().add(60, 'second').valueOf()); // '0天00时01分00秒';
GetOverTime(Dayjs().add(1, 'second').valueOf()); // '0天00时00分01秒';
GetOverTime(Dayjs().add(1, 'hour').valueOf()); // '0天01时00分00秒';
GetOverTime(Dayjs().add(25, 'hour').valueOf()); // '1天01时00分00秒';
GetOverTime(Dayjs().add(1, 'day').valueOf()); // '1天00时00分00秒';
GetOverTime(Dayjs().add(1, 'week').valueOf()); // '7天00时00分00秒';
GetOverTime(Dayjs().subtract(1, 'day').valueOf()); // '0天00时00分00秒'
```
**Dayjs**
- 说明: 同 `dayjs`
- 提示: 参考: <https://github.com/iamkun/dayjs>