datex时间格式化工具开源算法

极度轻巧的时间格式化处理工具,适用于多数网页时间应用场景

获取脚本 世界时间 中华万年历

初始化

datex(dateStr|Array|Object|)

通过多个参数初始化

运行:datex(2018,8,8)


通过时间字符串初始化

运行:datex('2018-08-08')

运行:datex('20180808')

运行:datex('2018-04-04T16:00:00.000Z')


通过自定义格式初始化

运行:datex('2018年4月3号','YYYY年MM月DD号')


通过时间对象初始化

运行:datex({year:2008,month:8,day:8,hour:8,minute:0,second:0})


通过时间数组初始化

运行:datex([2018,8,8,8,8,0])


通过时间戳

运行:datex(1218124800000)


通过原生Date实例对象

运行:datex(new Date('2018-08-08'))


无参数初始化

运行:datex()

返回格式化时间

format(pattern)

运行:datex(2022,10,1).format('YYYY-MM-DD HH:mm:ss')

返回:2022-10-01 00:00:00


运行:datex(1671761818503).format('YYYY/MM/DD')

返回:2022/12/23

运行:datex(1671761818503).format(function(toObject){...})

输入 示例 描述
YY 18 两位数的年份
YYYY 2018 四位数的年份
M 1-12 月份,从 1 开始
MM 01-12 月份,两位数
MMM 1月-12月/Jan-Dec 缩写的月份名称
MMMM 一月-十二月/January-December 完整的月份名称
D 1-31 月份里的一天
DD 01-31 月份里的一天,两位数
H 0-23 小时
HH 00-23 小时,两位数
h 1-12 小时, 12 小时制
hh 01-12 小时, 12 小时制, 两位数
m 0-59 分钟
mm 00-59 分钟,两位数
s 0-59
ss 00-59 秒,两位数
S 0-9 毫秒,一位数
SS 00-99 毫秒,两位数
SSS 000-999 毫秒,三位数
Z -05:00 UTC 的偏移量
ZZ -0500 UTC 的偏移量,两位数
A AM / PM 上午 下午 大写
a am / pm 上午 下午 小写
W 0 0-6,分别表示星期日-星期六
WW 周一 周x
WWW 星期日 星期x
Do 1st... 31st 带序数词的月份里的一天
x 1410715640 Unix时间戳(秒)
X 1410715640579 Unix时间戳(毫秒)

返回时间戳(毫秒)

getTime()

运行:datex().getTime()

返回:1670768193313

返回时间戳(秒)

getUnix()

运行:datex().getUnix()

返回:1670768193

返回克隆对象

clone()

运行:datex().clone()

返回原生Date对象

toDate()

运行:datex().toDate()

返回:Sun Dec 11 2022 22:20:20 GMT+0800 (中国标准时间)

返回时间字段对象

toObject()

运行:datex().toObject()

返回:

{
	year:2022,
	month:12,
	day:11,
	hour:22,
	minute:23,
	second: 14,
	millsecond:612,
	timestamp:1670768594612,
	week:0
}

返回时间字段数组

toArray()

运行:datex().toArray()

返回:[2022,12,11,22,23,14,612]

返回字符串

toString()

运行:datex().toString()

返回:Wed Apr 12 2023 15:19:41 GMT+0800 (中国标准时间)

返回ISO字符串

toISOString()

运行:datex().toISOString()

返回:2023-04-12T07:20:23.363Z

设置某字段值

set(name,value)

运行:datex(2022,10,1).set('year',2020).format()

返回:2020-10-01 00:00:00

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

增减某字段值

change(name,value)

运行:datex(2022,10,1).change('year',1).format()

返回:2022-10-01 00:00:00

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

获取某字段起始时

startOf(name)

运行:datex(2022,10,10).startOf('month').format()

返回:2022-10-01 00:00:00

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

获取某字段末尾时

endOf(name)

运行:datex(2022,10,10).endOf('month').format()

返回:2022-10-31 23:59:59

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

返回某字段值

get(name)

运行:datex(2022,10,1).get('year')

返回:2020

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

是否在某个时间点之前

isBefore(dateStr|datex,name)

运行:datex('2008-08-08').isBefore('2022-02-02')

返回:true

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

是否在某个时间点之后

isAfter(dateStr|datex,name)

运行:datex('2008-08-08').isAfter('2022-02-02')

返回:false

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

是否和某个时间点相等

isSame(dateStr|datex,name)

运行:datex('2008-08-08').isSame('2022-02-02')

返回:false


运行:datex('2008-08-08').isSame('2018-02-02','year')

返回:true

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

是否在两个时间点之间

isBetween(dateStr|datex,dateStr|datex,name)

运行:datex('2008-08-08').isBetween('2003-07-13','2022-02-02')

返回:true

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒
timestamp 时间戳
week 周几

是否为有效对象

isValid()

运行:datex('2008-13-12').isValid()

返回:false

与某时间点差值

diffWith(dateStr|datex,name)

运行:datex('1949-10-01').diffWith()

返回:【时长对象】

运行:datex('1949-10-01').diffWith('2022-12-01')

返回:【时长对象】


运行:datex('1949-10-01').diffWith('2022-12-01','month')

返回:-878


运行:datex('1949-10-01').diffWith('2022-12-01').toObject()

返回:{"year":-73,"month":-2,"day":0,"hour":0,"minute":0,"second":0,"millsecond":0,"value": -2308953600000}


运行:datex('1997-07-01').diffWith('1949-10-01').format('Y年M个月D天')

返回:'47年9个月0天'

运行:datex('1997-07-01').diffWith('1949-10-01').format(function(toObject){...})

单位 说明
year
month
day
hour 小时
minute 分钟
second
millsecond 毫秒

获取支持时区列表

supportedTimezones

支持的时区

运行:datex.supportedTimezones

返回:['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmera', 'Africa/Bamako',...]

返回当前时间戳(毫秒)

now()

全局设置

运行:datex.now()

时长处理

duration()

初始化,返回【时长对象】

运行:datex.duration(2,'day')

运行:datex.duration({'day':1,'hour':2,'minute':3})

运行:datex.duration(10000000)


获取时长

运行:datex.duration(2,'day').get('second')


修改时长

运行:datex.duration(2,'day').change('second',-1)


格式化时长

运行:datex.duration(2,'day').format('HH:mm:ss')

运行:datex.duration(2,'day').format(function(toObject){...})

输入 示例 描述
Y+ 0-99
M+ 0-99
D+ 0-99
H+ 0-99 小时
m+ 0-99 分钟
s+ 0-99
S+ 0-999 毫秒

插件扩展

extend()

全局设置

运行:datex.extend(pluginsLoader)

获取当前时区与UTC的时间差(分钟)

getTimezoneOffset()

全局设置

运行:datex.switchTimezone("Europe/Berlin").getTimezoneOffset()

返回:-60


实例设置

运行:datex().switchTimezone("Europe/Berlin").getTimezoneOffset()

返回:-60

设置语言包

setLanguage(lang,data)

全局设置

运行:datex.setLanguage('zh-CN',{'w':['周日','周一','周二','周三','周四','周五','周六']})


实例设置

运行:datex().setLanguage('zh-CN',{'w':['周日','周一','周二','周三','周四','周五','周六']})

切换语言包

switchLanguage(lang)

全局设置

运行:datex.switchLanguage('en-US')


实例设置

运行:datex().switchLanguage('en-US')

获取时区

getTimezone()

全局获取

运行:datex.getTimezone()

返回:'Asia/Shanghai'


实例获取

运行:datex().getTimezone()

返回:'Asia/Shanghai'

切换时区

switchTimezone(timezone)

* 时区切换只改变时间字符串显示,即format方法及初始化过程,时间戳不会相应改变


全局设置

运行:datex.switchTimezone('Asia/Tokyo')


实例设置

运行:datex().switchTimezone('Asia/Tokyo')

算法开源

算法基于「MIT许可协议」开源,除需在源码中保留版权信息和许可声明外,你有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。数据持续更新中,如发现错漏或有想法建议可在此 反馈问题

Copyright © passer-by.com