日期转化为时间戳,主要用valueOf()来进行转化为毫秒时间戳,getTime()IOS系统无法解析转换,所以都有valueOf()
let getTimestampOrDate=function(timestamp)
{
let timeStamp='';
const regex=/^\d{4}(-|\/)\d{2}(-|\/)\d{2}$/;
const regex2=/^\d{4}(-|\/)\d{2}(-|\/)\d{2} \d{2}:\d{2}:\d{2}$/;
//如果timestamp是时间戳,10位的是秒,转换成毫秒*1000
//如果是13位则为毫秒
if(typeof timestamp==='number'){
let timestampLen=timestamp.toString().length;
if(timestampLen===10)
{
timeStamp=timestamp*1000;
}else if(timestampLen===13)
{
timeStamp=timestamp;
}
}
//如果timestamp输入的是日期:2024-01-01或2024/01/01都可以,但在这里全部会替换成"/",
//然后再求取时间戳;用valueOf()求取时间戳,getTime()时间戳IOS解析不了
if(regex.test(timestamp) || regex2.test(timestamp))
{
let datetime='';
if(timestamp.indexOf('-'))
{
datetime=timestamp.replace(/-/g,'/');
timeStamp=new Date(datetime).valueOf();
}else if(timestamp.indexOf('/'))
{
timeStamp=new Date(timestamp).valueOf();
}
//输入的日期直接转换为时间戳并返回
return timeStamp;
}
//将上面输入的时间在这里转为日期
let date=new Date(timeStamp);
let Y=(date.getFullYear()+'-');
let M=(date.getMonth()+1 <10 ? '0'+(date.getMonth()+1) : date.getMonth()+1)+'-';
let D=(date.getDate() < 10 ? '0' +date.getDate() + " " : date.getDate()+" ");
let h=(date.getHours() < 10 ? '0'+date.getHours()+":" : date.getHours()+":");
let m=(date.getMinutes()<10 ? '0'+date.getMinutes()+":":date.getMinutes()+":");
let s=(date.getSeconds()<10 ? '0'+date.getSeconds():date.getSeconds());
console.log(h);
//如果时间是00:00:00则只显示日期;如果有时间则显示日期+时间
if(h==='00:')
{
return Y+M+D;
}else
{
return Y+M+D+h+m+s;
}
}
//输入时间戳不带引号;转入日期则带引号
console.log(getTimestampOrDate(1704038400000));
//输入日期可2024/01/01或2024-01-01都可以,时间戳一致
console.log(getTimestampOrDate("2024/01/01 15:12:15"));
//检验时间戳是否一致,必须是斜杠的日期,不能是“-”;不然不一致
console.log(new Date("2024/01/01").valueOf());
console.log(new Date(1711411200000));