我正在使用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>

10-05 20:37