DayDart 具备 Day.js 一样API的时间处理库.
# Getting Started
DayDart (opens new window) 具备 Day.js 一样 API 的时间处理库。
# Install
在项目下运行此命令
dart pub add daydart
# or
flutter pub add daydart
2
3
这将在包的 pubspec.yaml
中添加这样的一行(并运行一个隐式 dart pub get
):
dependencies:
daydart: ^0.0.1
2
也可以直接在 pubspec.yaml
中直接git路径引入,然后手动执行dart pub get
dependencies:
daydart:
url: https://github.com/csjiabin/daydart.git
ref: main
2
3
4
# 导入 Import
现在在您的 Dart 代码中,您可以使用:
import 'package:daydart/daydart.dart';
# API
DayDart
对象是不可变的,所有的调用都将返回一个新的 DayDart
对象。
# 解析
在 DayDart
中传入支持的格式。
# 默认值
不带参数调用 DayDart()将返回一个新的DayDart
对象,其中包含当前日期和时间
DayDart now = DayDart()
# 字符串
以 ISO 8601
格式解析给定字符串并返回DayDart
对象实例。
DayDart('2018-04-04')
# DateTime 对象
传入的一个 DateTime 对象。
DayDart(DateTime.now());
# 时间戳(毫秒)
通过一个毫秒的整数值来创建DayDart
DayDart(1623484401193);
# 克隆
所有 DayDart 对象是不可变的。如果需要的话,DayDart#clone 仍然可以创建当前对象的一个克隆。
DayDart a = DayDart()
DayDart b = a.clone()
2
在DayDart
对象上调用 DayDart()也会克隆它。
DayDart a = DayDart()
DayDart b = DayDart(a)
2
# 验证
返回一个布尔值,指示DayDart
对象是否包含有效日期。
DayDart().isValid()
# 获取
# 年
获取或设置年份。
DayDart().year();
DayDart().year(2000);
2
# 月
获取或设置月份。
接受 1 到 12 的数字。如果超过这个范围,将一直持续到年底。
DayDart().month();
DayDart().month(1);
2
# 季度
获取或设置季度。
DayDart('2010-04-01').quarter() // 2
DayDart('2010-04-01').quarter(2)
2
# 日
获取或设置月份的日期。
接受从 1 到 31 的数字。如果超过这个范围,将持续到日。
DayDart().day()
DayDart().day(1)
2
# 星期
获取星期
DayDart().week()
# 小时
获取或设置小时。
接受 0 到 59 的数字。如果超过这个范围,将持续到日。
DayDart().hour()
DayDart().hour(12)
2
# 分钟
获取或设置分钟。
接受 0 到 59 的数字。如果超过这个范围,将持续到小时
DayDart().minute()
DayDart().minute(12)
2
# 秒
获取或设置秒。
接受 0 到 59 的数字。如果超过这个范围,将持续到分钟。
DayDart().second()
DayDart().second(12)
2
# 毫秒
获取或设置毫秒。
接受 0 到 999 的数字。如果超过这个范围,将持续到秒。
DayDart().millisecond()
DayDart().millisecond(12)
2
# 操作
一旦有了 DayDart 对象,您可能希望以某种方式对其进行操作。
DayDart 支持这样的方法链接:
DayDart('2019-01-25')..add(1, DayUnits.D)..subtract(1, DayUnits.y)..year(2009)..toString()
所有可用单位列表
单位 | 描述 |
---|---|
D | 天(1 到 31) |
M | 月份(1-12) |
y | 年 |
h | 小时 |
m | 分钟 |
s | 秒 |
ms | 毫秒 |
# 增加
返回一个克隆的 DayDart
对象,并添加指定的时间。
DayDart().add(7, DayUnits.D)
单位不区分大小写,支持复数和缩写形式。
# 减少
返回克隆的DayDart
对象,并减去指定的时间。
DayDart().subtract(7, DayUnits.D)
单位不区分大小写,支持复数和缩写形式。
# 查询
所有可用单位列表
缩写 | 描述 |
---|---|
D | 天 |
M | 月份 |
y | 年 |
h | 小时 |
m | 分钟 |
s | 秒 |
ms | 毫秒 |
# 是否之前
这指示DayDart
对象是否在另一个提供的 date-time 之前。
DayDart().isBefore(DayDart('2011-01-01')) // default milliseconds
如果希望将粒度限制为单位而不是毫秒,则将其作为第二个参数传递。
DayDart().isBefore('2011-01-01', DayUnits.y)
# 是否相同
这指示DayDart
对象是否与另一个提供的 date-time 相同。
DayDart().isSame(DayDart('2011-01-01')) // default milliseconds
如果希望将粒度限制为单位而不是毫秒,则将其作为第二个参数传递。
DayDart().isSame('2011-01-01', DayUnits.y)
单位不区分大小写,支持复数和缩写形式。
# 是否之后
这指示DayDart
对象是否在另一个提供的 date-time 之后。
DayDart().isAfter(DayDart('2011-01-01')) // default milliseconds
如果希望将粒度限制为单位而不是毫秒,则将其作为第二个参数传递。
DayDart().isAfter('2011-01-01', DayUnits.y)
单位不区分大小写,支持复数和缩写形式。
# 是否相同或之前
这表明DayDart
对象是相同的还是在另一个提供的 date-time 之前。
DayDart().isSameOrBefore(DayDart('2011-01-01')) // default milliseconds
如果希望将粒度限制为单位而不是毫秒,则将其作为第二个参数传递。
DayDart().isSameOrBefore('2011-01-01', DayUnits.y)
单位不区分大小写,支持复数和缩写形式。
# 是否相同或之后
这指示DayDart
对象是相同的还是在另一个提供的 date-time 之后。
DayDart().isSameOrAfter(DayDart('2011-01-01')) // default milliseconds
如果希望将粒度限制为单位而不是毫秒,则将其作为第二个参数传递。
DayDart().isSameOrAfter('2011-01-01', DayUnits.y)
单位不区分大小写,支持复数和缩写形式。
# 是否之间
这指示DayDart
对象是否位于另外两个提供的 date-time 之间。
DayDart('2010-10-20').isBetween('2010-10-19', DayDart('2010-10-25'))// default milliseconds
如果希望将粒度限制为单位而不是毫秒,则将其作为第三个参数传递。
DayDart().isBetween('2010-10-19', '2010-10-25', DayUnits.y)
单位不区分大小写,支持复数和缩写形式。
# 判断是否为 DayDart
这指示变量是否为 DayDart
对象。
DayDart.isDayDart(DayDart()) // true
DayDart.isDayDart(DateTime.now()) // false
2
也可以使用 is
操作符:
DayDart() is DayDart // true
# 是否闰年
这表明 Day.js 对象的年份是否为闰年。
DayDart('2000-01-01').isLeapYear() // true
# 显示
# 格式化
根据传入的令牌字符串获取格式化的日期。
要对字符进行转义,请将它们括在方括号中(例如'MM')。
DayDart().format()
DayDart('2019-01-25').format('dd/MM/yyyy') // '25/01/2019'
2
3
所有可用解析标记的列表
标识 | 描述 |
---|---|
d | DAY |
E | ABBR_WEEKDAY |
EEEE | WEEKDAY |
LLL | ABBR_STANDALONE_MONTH |
LLLL | STANDALONE_MONTH |
M | NUM_MONTH |
Md | NUM_MONTH_DAY |
MEd | NUM_MONTH_WEEKDAY_DAY |
MMM | ABBR_MONTH |
MMMd | ABBR_MONTH_DAY |
MMMEd | ABBR_MONTH_WEEKDAY_DAY |
MMMM | MONTH |
MMMMd | MONTH_DAY |
MMMMEEEEd | MONTH_WEEKDAY_DAY |
QQQ | ABBR_QUARTER |
QQQQ | QUARTER |
y | YEAR |
yM | YEAR_NUM_MONTH |
yMd | YEAR_NUM_MONTH_DAY |
yMEd | YEAR_NUM_MONTH_WEEKDAY_DAY |
yMMM | YEAR_ABBR_MONTH |
yMMMd | YEAR_ABBR_MONTH_DAY |
yMMMEd | YEAR_ABBR_MONTH_WEEKDAY_DAY |
yMMMM | YEAR_MONTH |
yMMMMd | YEAR_MONTH_DAY |
yMMMMEEEEd | YEAR_MONTH_WEEKDAY_DAY |
yQQQ | YEAR_ABBR_QUARTER |
yQQQQ | YEAR_QUARTER |
H | HOUR24 |
Hm | HOUR24_MINUTE |
Hms | HOUR24_MINUTE_SECOND |
j | HOUR |
jm | HOUR_MINUTE |
jms | HOUR_MINUTE_SECOND |
m | MINUTE |
ms | MINUTE_SECOND |
s | SECOND |
# 转 DateTime 对象
要获得从DayDart
对象解析的本地日期对象的副本,请使用 DayDart#toDate。
DayDart('2019-01-25').toDate()
# 转 List
DayDart('2019-01-25').toList() // [ 2019, 0, 25, 0, 0, 0, 0 ]
# 转 Map
返回具有日期属性的Map
。
DayDart('2019-01-25').toMap()
/*
{
years: 2019,
months: 0,
date: 25,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0
}
*/
2
3
4
5
6
7
8
9
10
11
12
# 转 IOS 8601 字符串
格式化为 ISO 8601 字符串。
DayDart('2019-01-25').toISOString() // 2019-01-25T00:00:00.000
# 转字符串
返回日期的字符串表示形式。
DayDart('2019-01-25').toString() // 2019-01-25 00:00:00.000