js中传入指定日期转换为时间戳,可以使用原生javascript的Date对象进行格式化操作或第三方js库如moment.js进行格式化输出。以下是这2种方法的具体实现:
1、使用原生javascript的Date对象,进行格式化
(1)将日期字符串转换为Date类型的对象。
let d = new Date('2018-01-01')
(2)转换为时间戳。
let t = d.getTime(d) // 方法1
let t = d.valueOf(d) // 方法2
let t = d.parse(d) // 方法3
2、第三方js库moment.js进行格式化
(1)在html中引入moment.js,添加以下script标签:
<script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.js"></script>
(2)将日期转换为时间戳
参数格式为:YYYY-MM-DD HH:mm:ss 或 YYYY-MM-DD
moment('2018-01-01').valueOf()
扩展资料:
1、js将当前日期转换为时间戳
let timeStamp = new Date().getTime()
2、js将时间戳转换为日期
let d = new Date(timestamp * 1000)// 时间戳为10位需*1000,时间戳为13位的话不需乘1000
let yyyy = d.getFullYear() + '-'
let MM = (d.getMonth()+1 <10 ? '0'+(d.getMonth()+1) : d.getMonth()+1) + '-'
let dd = d.getDate() + ' '
let HH = d.getHours() + ':'
let mm = d.getMinutes() + ':'
let ss = d.getSeconds()
return yyyy + MM + dd + HH + mm + ss
参考资料来源:JavaScript标准库-Date
Date.now()、new Date().getTime() 和 +new Date() 是浏览器环境下一直都有的,自然不必多说。
process.uptime() 返回的是Node程序已运行的时间,单位秒。
process.hrtime() 返回的是当前的高分辨率时间,格式为[秒, 纳秒]。它是相对于在过去的任意时间,该值与日期无关。优点是:可以获得一个非常精准的时间差,不会受到时钟飘逸的影响;缺点是:速度慢。
要获取一个非常精确地时间间隔,用 process.hrtime();大量循环获取时间戳的时候,要考虑性能,用 Date.now()。
var formatTime = function(time = new Date(), format) {const TOTOW = e => `0${e}`.substr(-2) // 转成2位的格式 1 => 01
const date = new Date(time)
const yyyy = date.getFullYear()
const MM = TOTOW(date.getMonth() + 1)
const dd = TOTOW(date.getDate())
const hh = TOTOW(date.getHours())
const mm = TOTOW(date.getMinutes())
const ss = TOTOW(date.getSeconds())
let result
if (format) {
result = format.replace(/yyyy/i, yyyy).replace(/MM/, MM).replace(/dd/i, dd).replace(/hh/i, hh).replace(/mm/, mm).replace(/ss/i, ss)
} else {
result = `${yyyy}-${MM}-${dd} ${hh}:${mm}:${ss}`
}
return result
}
setInterval(() => {
let now = formatTime(new Date(), 'yyyy年MM月dd日 hh时mm分ss秒') // 月份必须是大写MM,分钟必须是小写mm,其他大小写都行
document.body.innerText = now
}, 1000)