export function formatDate(
dat: Date,
formatString = 'yyyy-MM-dd hh:mm:ss',
): string {
let str = formatString;
const year = `${dat.getFullYear()}`;
const month = `${dat.getMonth() + 1}`.padStart(2, '0');
const day = `${dat.getDate()}`.padStart(2, '0');
const hour = `${dat.getHours()}`.padStart(2, '0');
const minutes = `${dat.getMinutes()}`.padStart(2, '0');
const seconds = `${dat.getSeconds()}`.padStart(2, '0');
str = str.replace(/yyyy/i, year);
str = str.replace(/MM/, month);
str = str.replace(/dd/i, day);
str = str.replace(/hh/i, hour);
str = str.replace(/mm/, minutes);
str = str.replace(/ss/i, seconds);
return str;
}
var date = new Date();
console.log(date) // Thu Dec 06 2018 14:58:22 GMT+0800 (中国标准时间)
date = date.setDate(date.getDate()+1);
date = new Date(date);
console.log(date) // Fri Dec 07 2018 14:58:22 GMT+0800 (中国标准时间)
Date
对象的toLocaleString([locales][, options])
locales
: 区域设置标记。标记可包括语言、区域、国家/地区和变量。options
: 参数可包括以下属性:
hour12
: 接受一个布尔值, 指定是否对小时使用 12 小时格式,false
为24小时格式。详情请查看示例:
/*格式化日期格式
*@param {String} strTime 接受一个毫秒数作为参数
*@return {String} 返回yy-mm-ss hh:mm:ss格式
*/
function dateFormat(strTime){
var date = new Date(Number(strTime))
return date.toLocaleString('zh-CN',{hour12:false})
.replace(/\b\d\b/g,'0$&').replace(/\//g,'-')
}
// input: 1544079025783
// output: "2018-12-06 14:50:25"
function formatDatePicker(num){
//目标时区 东八区传入数字8
var timezone = num;
// 本地时间和格林威治的时间差,单位为分钟,转换为毫秒
var offset = new Date().getTimezoneOffset()* 60 * 1000;
// 本地时间距格林威治时间之间的毫秒数
var timestamp = new Date().getTime();
return new Date(timestamp + offset + timezone * 60 * 60 * 1000).getTime();
// timestamp + offset
// 相当于是当前utc的时间即世界时(0时区的时间),再加上1时区相隔1小时 得到指定时区的当前时间。
}
“刚刚” “几分钟前” “几小时前” …
const getTimeShow = timeStr => {
if (tmpStr && typeof tmpStr === 'string') {
tmpStr = tmpStr.replace(/\-/g, '/'); // 兼容 ios
} else {
return '--';
}
const date = new Date(tmpStr);
if (date == 'Invalid Date') {
return '--';
}
const now = new Date();
// 计算时间间隔,单位为分钟
const inter = parseInt((now.getTime() - date.getTime()) / 1000 / 60, 0);
if (inter < 10) {
return '刚刚';
}
// 多少分钟前
if (inter < 60) {
return `${inter.toString()}分钟前`;
}
// 多少小时前
if (inter < 60 * 24) {
const hour = parseInt(inter / 60);
return `${hour}小时前`;
}
const month = `${date.getMonth() + 1}`.padStart(2, '0');
const day = `${date.getDate()}`.padStart(2, '0');
// 本年度内,展示 月-日
if (now.getFullYear() === date.getFullYear()) {
return `${month}-${day}`;
}
// 不是本年度 展示 年-月-日
return `${date.getFullYear().toString()}-${month}-${day}`;
};
export default getTimeShow;
var _reTimeReg = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;
// 1. 日期 在安卓和ios上都表现正常
var d1 = new Date('2020-01-01');
// 2. 日期 在安卓和ios上都表现正常
var d2 = new Date('2020/01/01');
// 3. 日期+时间 在ios不兼容 在安卓上兼容
var d1 = new Date('2020-01-01 08:00:00');
// 4. 日期+时间 第二种 兼容ios 和 安卓
var d2 = new Date('2020/01/01 08:00:00');
// 解决方案
var timeStr = '2020-02-02 12:00:00'
var date = new Date(timeStr.replace(/\-/g, '/'))