我正在使用Polymer,并且有一个日期要作为UNIX时间戳(例如1487016105201),我想将其格式化为mm/dd/yyyy - hh/mm
。
我解决了这个问题...见下文:
<vaadin-grid-column>
<template class="header">BINTS01 - last scan</template>
<!--<template>[[item.BINTS01]]</template> this works-->
<template>[[_formatEpochDate(item.BINTS01)]]</template>
</vaadin-grid-column>
<script>
部分是:<script>
Polymer({
is: 'my-view8',
properties:{
eTS : String,
},
_formatEpochDate: function(eTS){
// return eTS
var d = new Date(eTS);
var n = d.getUTCDay();
return d.toDateString()
},
});
最佳答案
Date(eTS).toUTC
不起作用的原因至少有两个。
调用Date
作为函数(即没有Date(eTS)
的new
)将返回字符串,而不是Date对象。您要new Date(eTS)
。
字符串和日期对象都没有名为toUTC
的属性(也没有名为toUTC
的方法,因此toUTC()
也不起作用)。也许您是说toUTCString()
?
考虑到以上事实,您可以将代码更改为此:
function _formatEpochDate(eTS) {
return new Date(eTS).toUTCString();
}
const dateString = _formatEpochDate(1487016105201);
console.log(dateString);
.as-console-wrapper{min-height:100%;}
...但是那并不能为您提供所需的格式。根据MDN:
toUTCString()
返回的值是UTC时区中的人类可读字符串。返回值的格式可能会因平台而异。最常见的返回值是RFC-1123格式的日期戳,这是RFC-822日期戳的略有更新的版本。您可以通过多种方式解决此问题,包括编写自己的日期格式程序。另一种选择是使用类似strftime的库,如下所示:
function _formatEpochDate(eTS) {
return strftime('%D - %H:%M', new Date(eTS));
}
const dateString = _formatEpochDate(1487016105201);
console.log(dateString);
.as-console-wrapper{min-height:100%;}
<script src="https://unpkg.com/[email protected]/strftime-min.js"></script>