在javascript中将时间戳转换为人类日期的函数

IT技术 javascript node.js date express timestamp
2021-01-18 19:08:13

如何将此时间戳转换13820863940002013-10-18 08:53:14使用 javascript 中的函数?目前我有这个功能:

function cleanDate(d) {return new Date(+d.replace(/\/Date\((\d+)\)\//, '$1'));}
6个回答

1382086394000可能是一个时间值,它是自 1970-01-01T00:00:00Z 以来的毫秒数。您可以使用它通过Date 构造函数创建 ECMAScript Date 对象

var d = new Date(1382086394000);

您如何将其转换为可读的内容取决于您。简单地将它发送到输出应该调用内部(并且完全依赖于实现) toString方法*,该方法通常以人类可读的形式打印等效的系统时间,例如

Fri Oct 18 2013 18:53:14 GMT+1000 (EST) 

在 ES5 中还有一些其他的内置格式选项:

等等。请注意,大多数都依赖于实现,并且在不同的浏览器中会有所不同。如果您希望在所有浏览器中使用相同的格式,则需要自己格式化日期,例如:

alert(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());

* Date.prototype.toString的格式已在ECMAScript 2018标准化它可能需要一段时间才能在所有实现中无处不在,但至少现在更常见的浏览器支持它。

这对我有帮助,谢谢。要删除 GMT 使用 -.toDateString()
2021-03-15 19:08:13
还有 togmtstring(),但已弃用。我不明白为什么在 JS 中有 tolocalestring(),浏览器中的一切都是本地的。还是toLocaleString与 Nodejs 的分离?如果您使用服务器端JS,并且客户端和服务器之间的时区不同,您会得到客户端区域吗?
2021-03-23 19:08:13
@timo - 使用“locale”是一种用词不当的方法,该方法试图呈现与用户的格式首选项一致的格式。不幸的是,它基于语言,这不是首选格式的特别好的决定因素。最好根据日期格式的系统首选项而不是不太具体的语言代码来格式化日期。
2021-04-06 19:08:13

这工作正常。chrome浏览器中检查

var theDate = new Date(timeStamp_value * 1000);
dateString = theDate.toGMTString();
alert(dateString );
将 1586855504 与 1000 相乘后,我得到了正确的结果,否则它提供了 1970
2021-03-13 19:08:13
乘以 1000 取决于您的时间戳是多少秒或毫秒
2021-03-19 19:08:13
注意**-*:不要乘以1000否则,你将进入未来的空间!
2021-03-31 19:08:13
toGMTString() 已弃用,请改用 toISOString() 或 toUTCString()
2021-04-10 19:08:13

为什么不简单

new Date (timestamp);

日期是一个日期,它的格式是另一回事。

Moment.js可以将 Unix 时间戳转换为任何自定义格式

在这种情况下 : var time = moment(1382086394000).format("DD-MM-YYYY h:mm:ss");

将打印18-10-2013 11:53:14

这是一个证明这一点的plunker

听起来这有点矫枉过正
2021-03-13 19:08:13
谢谢。这真的帮助了我。
2021-03-20 19:08:13

以下是解决各种日期格式混淆的简单方法:

当前日期:

var current_date=new Date();

获取当前日期的时间戳:

var timestamp=new Date().getTime();

将特定日期转换为时间戳:

var timestamp_formation=new Date('mm/dd/yyyy').getTime();

将时间戳转换为日期:

    var timestamp=new Date('02/10/2016').getTime();
    var todate=new Date(timestamp).getDate();
    var tomonth=new Date(timestamp).getMonth()+1;
    var toyear=new Date(timestamp).getFullYear();
    var original_date=tomonth+'/'+todate+'/'+toyear;

  OUTPUT:
 02/10/2016
是的@melpomene,一半的代码是无关紧要的,但我写它是为了清除对日期形成的进一步怀疑..!!!还有一件事我没有从任何地方复制它。我在自己的代码中尝试过,2 天前我在研究它
2021-03-26 19:08:13
显示的输出实际上与代码输出不匹配(2/10/2016)
2021-03-26 19:08:13
你是否真的复制了它并不重要。关键是所有信息都已经在另一个答案中了。顺便说一句,您的最后一个示例实际上并没有产生您声称的输出。
2021-04-05 19:08:13