utils:常见的几种日期格式和转换方法

一、UTC格式(国际统一时间)

YYYYMMDD T HHMMSS Z(或者时区标识)。
T表示分隔符Z表示的是UTC。(相差北京时间8小时)

2020-01-13T16:00:00.000Z,对应的北京时间:2020-01-14 00:00:00
20100607T152000+08。其中 “+08” 表示东八区。

二、中国标准时间

Fri Mar 18 2022 14:24:45 GMT+0800(中国标准时间)

三、时间戳

10位数的时间戳是以 为单位
1642662900

13位数的时间戳是以 毫秒 为单位
1646461131351

四、日期格式化

1. 封装代码

// src\utils\moment.js
// npm i moment@2.29.3
import moment from 'moment'// 配置中文环境
// 里面的字符可以根据自己的需要进行调整
moment.locale('zh-cn', {months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),weekdaysMin: '日_一_二_三_四_五_六'.split('_'),longDateFormat: {LT: 'HH:mm',LTS: 'HH:mm:ss',L: 'YYYY-MM-DD',LL: 'YYYY年MM月DD日',LLL: 'YYYY年MM月DD日Ah点mm分',LLLL: 'YYYY年MM月DD日ddddAh点mm分',l: 'YYYY-M-D',ll: 'YYYY年M月D日',lll: 'YYYY年M月D日 HH:mm',llll: 'YYYY年M月D日dddd HH:mm'},meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,meridiemHour: function (hour, meridiem) {if (hour === 12) {hour = 0}if (meridiem === '凌晨' || meridiem === '早上' ||meridiem === '上午') {return hour} else if (meridiem === '下午' || meridiem === '晚上') {return hour + 12} else {// '中午'return hour >= 11 ? hour : hour + 12}},meridiem: function (hour, minute, isLower) {const hm = hour * 100 + minuteif (hm < 600) {return '凌晨'} else if (hm < 900) {return '早上'} else if (hm < 1130) {return '上午'} else if (hm < 1230) {return '中午'} else if (hm < 1800) {return '下午'} else {return '晚上'}},calendar: {sameDay: '[今天]LT',nextDay: '[明天]LT',nextWeek: '[下]ddddLT',lastDay: '[昨天]LT',lastWeek: '[上]ddddLT',sameElse: 'L'},dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,ordinal: function (number, period) {switch (period) {case 'd':case 'D':case 'DDD':return number + '日'case 'M':return number + '月'case 'w':case 'W':return number + '周'default:return number}},relativeTime: {future: '%s内',past: '%s前',s: '几秒',ss: '%d秒',m: '1分钟',mm: '%d分钟',h: '1小时',hh: '%d小时',d: '1天',dd: '%d天',M: '1个月',MM: '%d个月',y: '1年',yy: '%d年'},week: {// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效dow: 1, // Monday is the first day of the week.doy: 4 // The week that contains Jan 4th is the first week of the year.}
})const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'// 日期格式化:utc、13时间戳、GMT都可以,10位时间戳不支持,需要单独写
export const dateFormat = function (time, format = DATE_TIME_FORMAT) {return moment(new Date(time)).format(format)
}
// 10位时间戳日期格式化
export const timeStamp10Format = function (time, format = DATE_TIME_FORMAT) {return moment(new Date(time * 1000)).format(format)
}// 转utc格式
export const toUTCFormat = function (time, format = DATE_TIME_FORMAT) {return moment(new Date(time)).format()
}
// 转13位时间戳格式
export const toTimeStamp13Format = function (time, format = DATE_TIME_FORMAT) {return moment(new Date(time)).valueOf()
}
// 转10位时间戳格式
export const toTimeStamp10Format = function (time, format = DATE_TIME_FORMAT) {return moment(new Date(time)).unix()
}
// 转GMT中国标准时间格式
export const toGMTFormat = function (time, format = DATE_TIME_FORMAT) {return moment(new Date(time))
}

2. 使用说明

(1) 引入utils工具

import {dateFormat} from '@/utils/moment'

(2) 使用工具

全局:过滤器

// main.js
// 引入
import { dateFormat } from './utils/moment'
// 注册过滤器
Vue.filter('dateFormat', dateFormat)// vue文件中
<template><div>{{ dateTime | dateFormat() }}{{ dateTime | dateFormat("YYYY") }}</div>
</template>

局部:单独使用

// vue文件
// 引入
import {dateFormat} from '@/utils/moment'
// 使用
this.dateTime = dateFormat(startDate)

五、时间格式

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、moment的常见用法总结

参考链接:https://blog.csdn.net/GZZ__z/article/details/121457985

Published by

风君子

独自遨游何稽首 揭天掀地慰生平