日期格式转换
补零规则
function padLeftOneZero (str) {
return ('0' + str).substr(str.length);
}
function padLeftTwoZero (str) {
return ('00' + str).substr(str.length)
}
1、毫秒值格式化:xx月xx日 xx:xx:xx
/**
* @function 时间戳格式化
* @param(date): new Date()
* @param(fmt): 返回格式
*/
function formatDate (date, fmt) {
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
}
let o = {
'M+': date.getMonth() + 1, // 月
'd+': date.getDate(), // 日
'h+': date.getHours(), // 时
'm+': date.getMinutes(), // 分
's+': date.getSeconds() // 秒
}
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + ''
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftTwoZero(str))
}
}
return fmt
}
// for example
let date = new Date(1610553600000)
formatDate(date, 'MM月dd日 hh:mm') // 01月14日 00:00
2、获取当前月份yyyy-MM-dd格式
// 方法一:
function formatYear (date) {
let y = date.getFullYear() // 获取年
let m = date.getMonth() + 1 // 获取月
let d = date.getDate() // 获取日
return y + '年' + m + '月' + d + '日' //
};
formatYear(new Date()) // '2022年7月25日'
// 方法二:
function getNowDate(){
var date = new Date()
var year = date.getFullYear()
var month = date.getMonth()
var day = date.getDate()
//月份需要+1,因为月份获取的是0-11
return `${year}-${(month+1).toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`
}
3、返回
今天/昨天/早期时间
function stampsToTime (millisecond) {
let date = new Date(parseInt(millisecond))
let todayYear = new Date().getFullYear() // 当前年
let todayMonth = new Date().getMonth() + 1 // 当前月
let todayDate = new Date().getDate() // 当前日
let year = date.getFullYear() // 后台年
let lastMonth = date.getMonth() + 1 // 后台月
let lastDate = date.getDate() // 后台日
let mo = padLeftOneZero(parseInt(lastMonth)) // 月
let d = padLeftOneZero(parseInt(lastDate)) // 日
let h = padLeftOneZero(parseInt(date.getHours())) // 时
let m = padLeftOneZero(parseInt(date.getMinutes())) // 分
if (year === todayYear) { // 同年
if (lastMonth === todayMonth) { // 同月
let comVal = todayDate - lastDate
switch (comVal) {
case 0: // 今天
return h + ':' + m
case 1: // 昨天
return '昨天' + '\xa0\xa0' + h + ':' + m
default: // 同月早期
// return year + '-' + mo + '-' + d + '\xa0' + h + ':' + m
return mo + '-' + d + '\xa0' + h + ':' + m
}
} else { // 其他月
return mo + '-' + d + '\xa0' + h + ':' + m
}
} else { // 其他年份
return year + '-' + mo + '-' + d + '\xa0' + h + ':' + m
}
}
4、获取当前时间
24小时制
function getNowTime(){
var date = new Date()
return `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`
}
5、使用ISO标准将 Date 对象转换为字符串
function filter(time) {
// toISOString() 方法可以使用ISO标准将 Date 对象转换为字符串。
return new Date(time * 1000).toISOString().substring(0, 10);
}
console.log(filter(1512023760)); // 2017-11-30
6、2021-03-31 00:00 => 1617120000000
// methods 1
+new Date("2021-03-31 00:00")
// methods 2
new Date('2021-03-31 00:00').getTime()
// methods 3
new Date('2021-03-31 00:00').valueOf()
7、时区时间转本地时间
// methods 1
function utcToLocal(datestr) {
let time = new Date(datestr).getTime();
const date = new Date(time);
const Y = date.getFullYear() + '-';
const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
const m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
const s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
const dateString = Y + M + D + h + m + s;
return dateString
};
// methods 2
function utcToLacal(dateStr) {
var date = new Date(datestr).toJSON();
var yym = new Date(+new Date(date) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
return yym
}
utcToLocal('2022-07-22T09:34:40.000+00:00') // '2022-07-22 17:34:40'