"2021-05-01 12:53:59.55" 时间对象在 ios 中会出现 NaN-NaN1-NaN
需要将对象格式化为:"2021/05/01 12:53:59.55" 可同时兼容 android 和 ios。
//将某时间转时间戳
/*
var time = new Date("2021-05-01 12:53:59.55")
"2021-05-01 12:53:59.55"时间对象在ios中会出现NaN-NaN1-NaN需要将对象格式为:"2021/05/01 12:53:59.55"同时兼容android和ios
*/
var time = new Date("2021-05-01 12:53:59.55".replace(/-/g,"/"))
time.getTime()
console.log(time.getTime())
time.valueOf()
console.log(time.valueOf())
Number(time)
console.log(Number(time))
+time
console.log(+time)
Date.parse(time) //后三位固定为 000
console.log(Date.parse(time))
//当前时间的时间戳:
new Date().getTime()
console.log(new Date().getTime())
new Date().valueOf()
console.log(new Date().valueOf())
Date.parse(new Date())
console.log(Date.parse(new Date()))
Number(new Date())
console.log(Number(new Date()))
+new Date()
console.log(+new Date())
获得 10 位数的时间戳,因为通过时间对象转换得到的时间戳都是 13 位的,有时候需要精确到秒的 10 位时间戳,那么要么截取前 10 位,要么除以 1000。
// 将13位时间戳除以1000然后再取整,得到10位时间戳数字
parseInt(+new Date()/1000)
// 将13位时间戳转换为字符串截取前10位,得到10位时间戳字符串
(+new Date()).toString().substring(0,10) // 截取第 0~9 位
(+new Date()).toString().substr(0,10) // 从第 0 位开始截取 10 位
// 注意:参数中的时间戳必须是13位的
new Date(1619746630790)
// 将时间戳转换为更加直观形象的本地时间
new Date(1619746630790).toLocaleString()
var time = new Date(1619746630790)
console.log(time.toLocaleString()) // 2021/4/30 09:37:10
new Date().getFullYear() //年
new Date().getMonth() //月 从0开始
new Date().getDate() //日 1月非01月
new Date().getHours() //时 1日非01日
new Date().getMinutes() //分 1分非01分
new Date().getSeconds() //秒 1秒非01秒
new Date().getDay() //周 0-6 周日-周六
/*
padStart(targetLength,padString) 用于头部补全,
padEnd(targetLength,padString) 用于尾部补全。
参数:
targetLength:目标长度。
如果这个数值小于当前字符串的长度,则返回当前字符串本身。
padString(可选参数):填充字符串。
如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的默认值为 " "
*/
//月日时分秒双位数补全
(new Date().getMonth()+1).toString().padStart(2,'0')
new Date().getDate().toString().padStart(2,'0')
new Date().getHours().toString().padStart(2,'0')
new Date().getMinutes().toString().padStart(2,'0')
new Date().getSeconds().toString().padStart(2,'0')
//时间格式化输出
formattedDate(time){
let date = new Date(time);
let year = date.getFullYear();
let month = (date.getMonth() + 1).toString().padStart(2,'0')
let day = date.getDate().toString().padStart(2,'0')
let hour = date.getHours().toString().padStart(2,'0')
let minute = date.getMinutes().toString().padStart(2,'0')
let second = date.getSeconds().toString().padStart(2,'0')
let weekDay = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
let week = date.getDay();
let formattedDate = `${year}-${month}-${day} ${hour}:${minute}:${second} ${weekDay[week]}`;
return formattedDate
},
//时间转时间戳
let nowStamp = new Date().getHours()*3600 + new Date().getMinutes()*60 + new Date().getSeconds()
console.log(nowStamp) //61579
//时间戳转时间
let nowTime = Number(61579);
let hour = Math.floor(nowTime /3600).toString().padStart(2,'0')
let minute = Math.floor((nowTime %3600)/60).toString().padStart(2,'0')
let second = (parseInt(nowTime %3600)%60).toString().padStart(2,'0')
console.log(`${hour}:${minute}:${second}`) //17:06:19
时间的比较:
// 天数差比较
let diffeTime = Math.ceil(Math.abs(new Date("2023/12/25 16:20:32").getTime() - new Date().getTime()) / (1000 * 3600 * 24))
//月数差比较
let diffeMonth = (Math.floor((new Date() - new Date("2023/10/06 16:06:06")) / (24 * 3600 * 1000 )) / 30).toFixed(0)
/* JavaScript Math对象 */
/*
方法 描述
abs(x)
返回 x 的绝对值
acos(x)
返回 x 的反余弦值
asin(x)
返回 x 的反正弦值
atan(x)
以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值
atan2(y,x)
返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)
ceil(x)
对数进行上舍入
cos(x)
返回数的余弦
exp(x)
返回 Ex 的指数
floor(x)
对 x 进行下舍入
log(x)
返回数的自然对数(底为e)
max(x,y,z,...,n)
返回 x,y,z,...,n 中的最高值
。
min(x,y,z,...,n)
返回 x,y,z,...,n中的最低值
pow(x,y)
返回 x 的 y 次幂
random()
返回 0 ~ 1 之间的随机数
round(x)
四舍五入
sin(x)
返回数的正弦
sqrt(x)
返回数的平方根
tan(x)
返回角的正切
tanh(x)
返回一个数的双曲正切函数值
trunc(x)
将数字的小数部分去掉,只保留整数部分
*/