扫一扫分享
Spacetime使用一种轻量级的方式来操纵,遍历,比较和格式化地球上任意地区的日期和时间。
特色:
npm install spacetime --save
在 Node 中:
npm test
Spacetime 允许以一堆默认格式快速渲染日期和时间。你可以通过直接调用 .format()
而不使用参数。
如果你希望传递所需的格式:
s.format('day-short')
// 'Sat'
s.format('date-ordinal')
// '26th'
Spacetime 支持灵活的,以人为本的格式,而不是经典的 Unix 格式化样式(即 'ddd hA' )。
* 'day' - 'Friday'
* 'day-short' - 'Fri'
* 'date' - '5'
* 'date-ordinal' - '5th'
* 'month' - 'January'
* 'month-short' - 'Jan'
* 'time' - '4:59pm'
* 'time-24h' - '16:59'
* 'year' - '2018'
* 'year-short' - "\'18"
* 'numeric-us' - '01/05/2018'
* 'numeric-uk' - '05/01/2018'
* 'numeric-cn' - '2018/01/05'
* 'iso' - '2018-01-05T16:59:33:152Z'
* 'iso-short' - '2018-01-05'
* 'iso-utc' - '2018-01-05T14:59:33.152Z'
* 'nice' - 'January 5th, 4:59pm'
* 'nice-day' - 'Friday January 5th, 4:59pm'
* 'nice-short' - 'Jan 5th, 4:59pm'
* 'full' - 'Friday January 5th, 2018'
* 'full-short' - 'Fri Jan 5th, 2018'
* 'ordinal' - '5th'
* 'date-short' - '5'
* 'time-12h' - '4:59pm'
* 'time-h12' - '4:59pm'
* 'time-h24' - '16:59'
* 'numeric' - '01/05/2018'
* 'mdy' - '01/05/2018'
* 'dmy' - '05/01/2018'
* 'ymd' - '2018/01/05'
* 'little-endian' - '05/01/2018'
* 'big-endian' - '2018/01/05'
你可以使用各种输入创建一个特定的日期+时间,取决于你的使用习惯。
Spacetime 支持所有 JavaScript 日期输入格式:
ISO Date "2015-03-25"
Short Date "03/25/2015" or "2015/03/25"
Long Date "Mar 25 2015" or "25 Mar 2015"
Full Date "Wednesday March 25 2015"
Epoch Time 1493042538
以及一些更结构化的格式,如:
// 数组
spacetime([2019, 0, 1,6,30]) // January 1st, 2019, 6:30am
// 基于对象
spacetime({year:2016, month:1, date:3})// February 1st, 2016
与 JavaScript Date 对象一样,当有信息丢失时,Spacetime 将使用你当前的本地时间填充缺少的信息:
// Will be June, with your current year, date, and time
spacetime({month:'june'})
// June 3rd, 2017, 12:02pm (or whatever)
数组和基于对象的输入使用基于0的月份,因为假设它们在软件中动态使用。一如以往,每个月的日期都是以1为基础的。
var spacetime=require('spacetime')
s = spacetime.now() //现在
s = spacetime.today() // 今天早上
s = spacetime.tomorrow() // 明天早上
// 输入日期
s = spacetime(1489520157) // 特定时间,例如1970-01-01 00:00:00 UTC
s = spacetime([2017, 5, 2]) // yyyy, m, d (月的基数是0, 天的基数是1)
s = spacetime('July 2, 2017 5:01:00') // 国际标准 ISO 表示方法
// 远程日期
s = spacetime(1489520157, 'Canada/Pacific')
// 获取/设置方法
s.date() // 14
s.year() // 2017
s.season() // Spring(季节)
s.hour(5) // 更改为上午5点
s.date(15) // 更改为第15
s.day('monday') // 更改为星期一(本周)
s.month('march') // 更改为3月1日(今年)
s.quarter(2) // 更改为4月1日
// 加/减方法
s.add(1, 'week')
s.add(3, 'quarters')
s.subtract(2, 'months').add(1,'day')
// 时区元数据
s.timezone().name // 'Canada/Eastern' (推测或显式)
s.timezone().hemisphere // 北半球
s.timezone().current.offset // -240 (以分钟为单位)
s.timezone().current.isDst // True
// 比较
let d = spacetime([2017, 5, 2])
let start = s.clone()
let end = s.clone()
start.subtract(1, 'milliseconds')
end.add(1, 'milliseconds')
// gt/lt/equals
s.isAfter(d) // True
s.isEqual(d) // False
s.isBefore(d) // False
s.isBetween(start, end) // True
// 单位比较
s.isSame(d, 'year') // True
s.isSame(d, 'date') // False
s.diff(d, 'day') // 5
s.diff(d, 'month') // 0
// 格式化日期+时间
s.format('time') // '5:01am'
s.format('numeric-uk') // 02/03/2017
s.format('month') // 'April'
s.format('month-short') // 'Apr'
// 日历
s.startOf('day') // 12:00am
s.startOf('month') // 12:00am, April 1st
s.endOf('quarter') // 11:59:59pm, June 30th
// 基于百分比的信息
s.progress().month = 0.23 // 一个季度的第一个月
s.progress().day = 0.48 // 几乎中午
s.progress().hour = 0.99 // 59分59秒
// 其他功能
s.goto('Australia/Brisbane') // 同时转入新的时区
s.clone() // 创建一个副本
s.isValid() // 验证(9月32日 → false)
手机预览