使用 Ractive.js 进行日期转换

Date conversion using Ractive.js

如何将 JSON 端点返回的 Epoch 时间值转换为类似 "Tue 19 Jan 11:14:07 SGT 2038" 的时间字符串?

var ractive = new Ractive({
  el: '#container',

  template: '#template',

  data: {
    lastUpdated: 2147483647
  }
});
<script src="http://cdn.ractivejs.org/latest/ractive.js"></script>
<pre>$ date --date='@2147483647' 
Tue 19 Jan 11:14:07 SGT 2038
</pre>

<div id='container'></div>
<script id='template' type='text/ractive'>
  <h1>Time: {{Date(lastUpdated)}}</h1>
</script>

我不想使用其他库,例如 moment.js。谢谢!

您可以为此使用 MomentJS

var ts = 2147483647;
var m = moment(ts);
var s = m.format("LLLL");
var ractive = new Ractive({
  el: '#container',

  template: '#template',

  data: {
    lastUpdated: s
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/locale/af.js"></script>
<script src="http://cdn.ractivejs.org/latest/ractive.js"></script>
<pre>$ date --date='@2147483647' 
Tue 19 Jan 11:14:07 SGT 2038
</pre>

<div id='container'></div>
<script id='template' type='text/ractive'>
  <h1>Time: {{lastUpdated}}</h1>
</script>

Ractive 对如何格式化日期没有意见,但您可以很容易地向 data 对象添加自定义格式化程序:

var ractive = new Ractive({
  el: '#container',
  template: '<h1>Time: {{formatDate(lastUpdated)}}</h1>',
  data: {
    lastUpdated: 2147483647,
    formatDate: function ( date ) {
      // formatting code goes here...
    }
  }
});

每当 lastUpdated 发生变化时,将再次调用格式化程序。