如何将 Epoch 中的日期转换为 Javascript 中的“Y-m-d H:i:s”?
Posted
技术标签:
【中文标题】如何将 Epoch 中的日期转换为 Javascript 中的“Y-m-d H:i:s”?【英文标题】:How can I convert a date in Epoch to "Y-m-d H:i:s" in Javascript? 【发布时间】:2012-05-19 03:08:16 【问题描述】:如何在纪元中转换以下日期:
1293683278
到以下可读日期:
2010-06-23 09:57:58
使用javascript?
谢谢!
【问题讨论】:
【参考方案1】:var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
console.log(year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds);
查看 js 日期文档了解更多详情
另一种方式:
var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var iso = date.toISOString().match(/(\d4\-\d2\-\d2)T(\d2:\d2:\d2)/)
console.log(iso[1] + ' ' + iso[2]);
【讨论】:
谢谢!奇怪的是,当我删除“* 1000”时它可以工作,但否则它会给我一些随机数..? javascript 中的日期以微秒为单位。您确定您的时间戳正好有 10 位数字吗? 我如何使用日期 2013-03-27 的 ISOstring 匹配获得像 20130327 这样的格式? 试试iso[1].replace(/-/g, '') + ' ' + iso[2]
经过一番谷歌搜索后,javascript 以毫秒为单位工作 :)【参考方案2】:
您可以为此使用moment.js。
moment.unix(1293683278).format('YYYY-MM-DD HH:mm:ss');
【讨论】:
【参考方案3】:代码:
var timestamp = 1293683278;
var d = new Date(timestamp * 1000);
console.log(
d.getFullYear() + "-" +
("00" + (d.getMonth() + 1)).slice(-2) + "-" +
("00" + d.getDate()).slice(-2) + " " +
("00" + d.getHours()).slice(-2) + ":" +
("00" + d.getMinutes()).slice(-2) + ":" +
("00" + d.getSeconds()).slice(-2)
);
格式:YYYY-MM-DD HH:II:SS
结果:2010-12-30 07:57:58
演示:https://jsfiddle.net/NabiKAZ/9ycovfxt/
注意:对于当前时间,只需使用:var d = new Date();
。
【讨论】:
【参考方案4】:在决定在您的项目中使用 Moment.js 之前,请考虑使用任何其他替代方案。
如Moment.js Project Status 所述。
我们现在通常认为 Moment 是一个处于维护模式的遗留项目。它没有死,但它确实完成了
此时,我建议使用date-fns library。它轻量级、简单,并且支持国际化。
我真正喜欢 date-fns 的地方在于您只需声明您需要使用的模块。 这是我的示例代码:
// Docs: https://date-fns.org/v2.23.0/docs/format
import format from 'date-fns/format'
import id from 'date-fns/locale/id'
function formatTimeLocale(time)
return format(
new Date(time),
`EEEE, d MMM yyyy 'pukul' HH:mm`,
locale: id,
)
// This will return: Rabu, 15 Sep 2021 pukul 16:21
const dateTime = formatTimeLocale(1631697689 * 1000)
console.log(dateTime)
【讨论】:
【参考方案5】:/* Get timestamp */
var timestamp = 1293683278;
document.querySelector("#timestamp").innerhtml = "Timestamp: " + timestamp;
/* Get milisecond from timestamp */
var milisecond = 1293683278 * 1000;
document.querySelector("#milisecond").innerHTML = "Milisecond: " + milisecond;
/* Separate milisecond */
var datetime = new Date(milisecond);
var year = datetime.getFullYear();
var month = datetime.getMonth() + 1; // (0-11)
var date = datetime.getDate();
var hour = datetime.getHours();
var minute = datetime.getMinutes();
var second = datetime.getSeconds();
document.querySelector("#datetime").innerHTML = "Datetime: " +
year + "-" + addZero(month) + "-" + addZero(date) + " " +
addZero(hour) + ":" + addZero(minute) + ":" + addZero(second);
// Add 0 if argument < 10
function addZero(i)
if (i < 10)
i = "0" + i
;
return i;
<p id="timestamp"><p>
<p id="milisecond"><p>
<p id="datetime"><p>
【讨论】:
【参考方案6】:我更喜欢这个简短的答案
new Date().toJSON().split('.')[0].split('T').join(' ')
【讨论】:
以上是关于如何将 Epoch 中的日期转换为 Javascript 中的“Y-m-d H:i:s”?的主要内容,如果未能解决你的问题,请参考以下文章