js - 时间转换
2021-10-26 本文已影响0人
梁庄十年
1. 本地时间(日期或者毫秒值)转换成UTC时间
localTimeToUTC(date) {
let UTC_time = '';
if(Object.prototype.toString.call(date) === '[object String]') {
const formated_UTC_time = this.formatedUTCTime(date); // 格式化UTC时间;
UTC_time = new Date(formated_UTC_time).toISOString();
} else {
UTC_time = new Date(date).toISOString();
}
return UTC_time;
},
参数说明:
date: string | number;
参数示例: '2021-10-26 22:49:00' 或者 1635259752769(时间戳);
返回值: string;
返回值示例: 2021-10-26T14:51:03.241Z;
2. UTC时间转本地时间
UTCToLocalTime(UTC_time, format) {
const date = new Date(UTC_time);
const year = date.getFullYear();
const ori_month = date.getMonth() + 1;
const month = ori_month < 10 ? `0${ori_month}` : ori_month;
const ori_day = date.getDay();
const day = ori_day < 10 ? `0${ori_day}` : ori_day;
const ori_hour = date.getHours();
const hour = ori_hour < 10 ? `0${ori_hour}` : ori_hour;
const ori_minute = date.getMinutes();
const minute = ori_minute < 10 ? `0${ori_minute}` : ori_minute;
const ori_second = date.getSeconds();
const second = ori_second < 10 ? `0${ori_second}` : ori_second;
if(format) {
return format.replace('YYYY', year)
.replace('MM', month)
.replace('DD', day)
.replace('hh', hour)
.replace('mm', minute)
.replace('ss', second);
} else {
return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}
},
参数说明:
UTC_time: string;
format: string
参数示例:
UTC_time: 2021-10-26T14:59:10Z ;
format: 'YYYY-MM-DD hh:mm:ss' 或 'YYYY-MM-DD' 或 'YYYY-MM-DD hh' 或 'YYYY-MM-DD hh:mm'
返回值: string;
返回值示例: 2021-10-26 14:51:03;
3. 日期转毫秒值
getTimeStamp(dateParams) {
const formateDate = dateParams.replace(new RegExp('-','gm'), '/');
const millisecond = new Date(formateDate).getTime();
return millisecond;
},
参数说明:
dateParams: string;
参数示例:
dateParams: 2021-10-26 14:59:10.08 或 2021-10-26 14:59 或 2021-10-26 ;
返回值: number;
返回值示例: 1635433226756(number)
4. 格式化UTC时间
formatedUTCTime(utc_time, customSplitMark) {
const T_pos = utc_time.indexOf('T');
const Z_pos = customSplitPos ? utc_time.indexOf(customSplitMark) : utc_time.indexOf('Z');
const year_month_day = utc_time.substr(0, T_pos);
const hour_minute_second = utc_time.substr(T_pos + 1, Z_pos - T_pos - 1);
return `${year_month_day} ${hour_minute_second}`;
}
参数说明:
utc_time: string;
customSplitMark: string
参数示例:
utc_time: 2021-10-26T14:59:10.087Z 或 2021-10-26T14:59:10Z ;
customSplitMark: '.'
返回值: string;
返回值示例: 2021-10-26 14:51:03;
5. 过于日期踩过的坑
// 如果是东八区, 获取到的是早上8点的毫秒值;
new Date('yyyy-MM-dd').getTime();
// 如果是东八区, 获取到的是0点的毫秒值,此处和前一种的区别在于最后加了一个空格;
new Date('yyyy-MM-dd ').getTime();
new Date('yyyy-MM-dd hh:mm:ss').getTime(); // 如果是东八区, 获取的是0的毫秒值;
new Date('yyyy-MM-dd 24:00:00').getTime(); // 获取当天24点的毫秒值;