【问题标题】:Convert UNIX timestamp to string将 UNIX 时间戳转换为字符串
【发布时间】:2017-07-29 07:18:47
【问题描述】:

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

&lt;script&gt; 部分是:

<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()
       },        
});

【问题讨论】:

  • 您的属性名称是eTS,但在您的模板中,您调用的是_formatEpochDate(item.BINTS01)item.BINTS01 是什么?
  • item.BINTS01 是一个数组字段。但我不认为这是问题所在。我认为这只是将那个值......以纪元形式转换为日期字符串的问题。此代码有效...仅返回纪元而不是日期。

标签: javascript polymer epoch


【解决方案1】:

Date(eTS).toUTC 不起作用至少有两个原因。

  1. Date 作为函数调用(即Date(eTS) 没有new)返回一个字符串,而不是一个日期对象。你想要new Date(eTS)
  2. 字符串和日期对象都没有名为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%;}
&lt;script src="https://unpkg.com/strftime@0.10.0/strftime-min.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2012-06-23
    • 2011-09-23
    相关资源
    最近更新 更多