Moment.js 常用API文档

0 阅读5分钟

Moment.js 常用API文档

1. 获取当前时间

moment()                           // 当前时间对象
moment().format()                  // 默认格式:2024-01-15T10:30:00+08:00
moment().format('YYYY-MM-DD')      // 2024-01-15
moment().format('YYYY-MM-DD HH:mm:ss')  // 2024-01-15 10:30:00
moment().format('YYYY年MM月DD日')  // 2024年01月15日

2. 时间加减操作

moment().add(1, 'days')            // 明天
moment().add(1, 'months')          // 下个月
moment().add(-1, 'days')           // 昨天
moment().subtract(1, 'days')       // 昨天
moment().add(7, 'hours')           // 7小时后
moment().subtract(30, 'minutes')   // 30分钟前

3. 时间比较

moment().isBefore(moment())        // false
moment().isAfter(moment())         // false
moment().isSame(moment(), 'day')   // true
moment().isBetween(startDate, endDate)  // 是否在时间范围内
moment().isSameOrBefore(date)      // 是否相同或之前
moment().isSameOrAfter(date)       // 是否相同或之后

4. 获取时间部分

moment().year()        // 年 (2024)
moment().month()       // 月 (0-11, 0表示1月)
moment().date()        // 日 (1-31)
moment().day()         // 星期 (0-6, 0表示周日)
moment().hour()        // 小时 (0-23)
moment().minute()      // 分钟 (0-59)
moment().second()      // 秒 (0-59)
moment().millisecond() // 毫秒 (0-999)

5. 时间差计算

moment().diff(moment().add(1, 'days'), 'days')     // -1
moment().diff(moment().subtract(1, 'hours'), 'hours')  // 1
moment.duration(1, 'days').asHours()            // 24
moment.duration(2, 'hours').asMinutes()         // 120

6. 解析字符串

moment('2024-01-15', 'YYYY-MM-DD')
moment('2024/01/15', 'YYYY/MM/DD')
moment('2024-01-15 10:30:00', 'YYYY-MM-DD HH:mm:ss')
moment('15/01/2024', ['DD/MM/YYYY', 'YYYY-MM-DD'])  // 多格式解析

7. 设置时间

moment().set('year', 2024)
moment().set('month', 0)           // 设置为1月
moment().set('date', 15)           // 设置为15号
moment().set('hour', 10)           // 设置为10点

8. 获取时间戳

moment().valueOf()     // 毫秒时间戳 (1705302000000)
moment().unix()        // 秒时间戳 (1705302000)
moment().format('X')     // 秒时间戳字符串
moment().format('x')   // 毫秒时间戳字符串

9. 克隆时间

const now = moment()
const tomorrow = now.clone().add(1, 'days')
const yesterday = now.clone().subtract(1, 'days')

10. 特殊时间获取

moment().startOf('day')        // 当天开始时间 (00:00:00)
moment().endOf('day')          // 当天结束时间 (23:59:59)
moment().startOf('month')      // 当月第一天
moment().endOf('month')        // 当月最后一天
moment().startOf('year')       // 当年第一天
moment().endOf('year')         // 当年最后一天
moment().startOf('week')       // 本周第一天(周日)
moment().startOf('isoWeek')    // 本周第一天(周一)

11. 判断相关

moment().isLeapYear()          // 是否闰年
moment().isDST()               // 是否夏令时
moment().isUTC()               // 是否UTC时间
moment('2024-13-45').isValid() // 是否有效日期

12. 获取月份天数

moment().daysInMonth()         // 当前月的天数
moment('2024-02').daysInMonth() // 2024年2月的天数(闰年29天)

13. 相对时间

moment().fromNow()             // "几秒前"
moment().toNow()               // "几秒后"
moment().from(moment().add(1, 'days'))  // "1天内"
moment().to(moment().subtract(1, 'days')) // "1天前"

14. 本地化

moment.locale('zh-cn')           // 设置为中文
moment().format('LLLL')          // 本地化格式
moment().format('LL')            // 2024年1月15日
moment().format('ll')            // 2024年1月15日

15. 周信息

moment().week()                  // 一年中的第几周
moment().weekYear()              // 周所在的年份
moment().isoWeek()               // ISO标准的第几周
moment().isoWeekYear()           // ISO周所在的年份

16. 季度相关

moment().quarter()               // 季度(1-4)
moment().startOf('quarter')      // 当前季度开始
moment().endOf('quarter')        // 当前季度结束

17. 格式化选项

moment().format('MMMM Do YYYY, h:mm:ss a')  // 2024年1月15日 下午3:24:00
moment().format('dddd')                      // 星期一
moment().format('MMM Do YY')                 // 1月15日 24
moment().format('YYYY [年] MM [月] DD [日]')  // 2024年1月15日

18. 数组和对象格式

moment().toArray()               // [2024, 0, 15, 10, 30, 0, 0]
moment().toObject()              // 包含所有时间属性的对象
moment().toJSON()                // ISO 8601格式

19. 字符串格式

moment().toString()              // Mon Jan 15 2024 10:30:00 GMT+0800
moment().toISOString()           // 2024-01-15T02:30:00.000Z

20. 最大/最小日期

moment.max(date1, date2, date3)  // 获取最晚的日期
moment.min(date1, date2, date3)  // 获取最早的日期

21. 持续时间

moment.duration(1, 'days')
moment.duration(2, 'hours')
moment.duration(30, 'minutes')
moment.duration(1, 'days').humanize()  // "1天"

22. 时区处理

moment().utc()                   // 转换为UTC时间
moment().local()                 // 转换为本地时间
moment.tz('2024-01-15', 'Asia/Shanghai')  // 指定时区
moment().zone('+0800')           // 设置时区偏移

23. 工作日计算(需要插件)

moment().businessAdd(5, 'days')  // 添加5个工作日
moment().businessSubtract(3, 'days') // 减去3个工作日

24. 常用格式模板

// 日期格式
'YYYY-MM-DD'           // 2024-01-15
'YYYY/MM/DD'           // 2024/01/15
'DD/MM/YYYY'           // 15/01/2024

// 时间格式
'HH:mm:ss'             // 14:30:00
'h:mm:ss a'            // 2:30:00 pm

// 日期时间格式
'YYYY-MM-DD HH:mm:ss'  // 2024-01-15 14:30:00
'YYYY/MM/DD HH:mm:ss'  // 2024/01/15 14:30:00

// 中文格式
'YYYY年MM月DD日'       // 2024年01月15日
'YYYY年M月D日'         // 2024年1月15日
'MM月DD日'             // 01月15日

25. 实用技巧

// 获取本月第一天和最后一天
const firstDay = moment().startOf('month').format('YYYY-MM-DD')
const lastDay = moment().endOf('month').format('YYYY-MM-DD')

// 获取本周一和周日
const monday = moment().startOf('isoWeek').format('YYYY-MM-DD')
const sunday = moment().endOf('isoWeek').format('YYYY-MM-DD')

// 获取上个月同一天
const lastMonth = moment().subtract(1, 'months').format('YYYY-MM-DD')

// 获取明年同一天
const nextYear = moment().add(1, 'years').format('YYYY-MM-DD')

// 判断两个日期是否在同一周
moment().isSame(otherDate, 'week')

// 获取两个日期之间的天数
const days = moment(endDate).diff(moment(startDate), 'days')

更多详细信息请参考 Moment.js 官方文档