如何在反应中正确显示日期?

时间:2018-10-15 03:23:47

标签: javascript reactjs date

我正在构建具有整合性合同集成的Web门户。在合同中,我将日期保存在uint中,就像这样1539491531

当我在网页上显示它时,它看起来像这样:

view

显示不同的日期。但是当我在代码中喜欢这样的时候。

<Feed.Date>{Date(date)}</Feed.Date> 

所有日期都显示为现在的时间,例如:Mon Oct 15 2018 08:44:18 GMT+0530 (India Standard Time)

如何解决此问题?有人可以帮我解决这个问题吗?谢谢。

4 个答案:

答案 0 :(得分:2)

您错过了Date(日期)之前的新内容 另外,也许尝试将该值乘以100

products: mainProducts

答案 1 :(得分:1)

您的问题是您缺少new关键字。

Date() // Mon Oct 15 2018 13:30:55 GMT+1000 (Australian Eastern Standard Time)
Date(1) // Mon Oct 15 2018 13:30:55 GMT+1000 (Australian Eastern Standard Time)
Date('something random') // Mon Oct 15 2018 13:30:55 GMT+1000 (Australian Eastern Standard Time)

但是,使用new

new Date() // Mon Oct 15 2018 13:30:55 GMT+1000 (Australian Eastern Standard Time)
new Date(1) // Thu Jan 01 1970 10:00:00 GMT+1000 (Australian Eastern Standard Time)
new Date('something random') // Invalid Date

请参见edvilme

  

将其作为常规函数调用(即不使用new运算符)将返回字符串而不是Date对象

在不使用Date()的情况下调用new时,它将调用一个函数,该函数返回当前时间的字符串。它不带任何参数,但是在Javascript中,您可以将任何参数传递给它,并且仍然可以使用,因此它只是忽略您传递的任何参数,并返回 string ,并且不是当前时间的日期。

typeof Date() // string
typeof new Date() // object

正如{{3}}所指出的,您的时间戳也看起来是,而不是new Date()要求的毫秒-您可以乘以1000使其生效< / p>

new Date(1529491531) // Mon Jan 19 1970 02:51:31 GMT+1000 (Australian Eastern Standard Time)
new Date(1529491531 * 1000) // Wed Jun 20 2018 20:45:31 GMT+1000 (Australian Eastern Standard Time)

答案 2 :(得分:1)

尝试像这样调整代码:

<Feed.Date>{ new Date(date) }</Feed.Date> 

通过创建日期对象(通过new),可以简化从UTC纪元时间(即date的值)到人类可读的日期字符串的转换。

有关日期的更多信息,see this MDN article

答案 3 :(得分:0)

我认为您可以使用格式功能来帮助您解决此问题。

Date.prototype.format = function(format)
{
 var o = {
 "M+" : this.getMonth()+1, //month
 "d+" : this.getDate(),    //day
 "h+" : this.getHours(),   //hour
 "m+" : this.getMinutes(), //minute
 "s+" : this.getSeconds(), //second
 "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
 "S" : this.getMilliseconds() //millisecond
 }
 if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
 (this.getFullYear()+"").substr(4 - RegExp.$1.length));
 for(var k in o)if(new RegExp("("+ k +")").test(format))
 format = format.replace(RegExp.$1,
 RegExp.$1.length==1 ? o[k] :
 ("00"+ o[k]).substr((""+ o[k]).length));
 return format;
}

然后您可以像这样使用它:

var d1 = new Date();
d1.format('yyyy-MM-dd');