将ISO 8061转换为YYYY / MM / DD?

时间:2017-06-15 07:53:08

标签: javascript reactjs d3.js

我有ISO 8061 2017-05-03T06:31:46.687123+00:00,我想用D3将其转换为YYYY-MM-DD。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

查看momentjs,特别是格式函数:https://momentjs.com/docs/#/displaying/

然后您可以编写如下内容:

moment("2017-05-03T06:31:46.687123+00:00").format("YYYY-MM-DD");

答案 1 :(得分:2)

由于您要使用d3.js ...请小心使用您正在使用的版本,因为函数名称发生了少量更改:

  • with v.3.4.11使用d3.time.format("%Y-%m-%d")
  • with v.4.9.1使用d3.timeFormat("%Y-%m-%d")

3.4.11

your_date = new Date('2017-05-03T06:31:46.687123+00:00')

var formatTime = d3.time.format("%Y-%m-%d");
new_date = formatTime( your_date ); // 2017-05-03

console.log(new_date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

4.9.1

your_date = new Date('2017-05-03T06:31:46.687123+00:00')

var formatTime = d3.timeFormat("%Y-%m-%d");
new_date = formatTime( your_date ); // 2017-05-03

console.log(new_date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.9.1/d3.min.js"></script>

答案 2 :(得分:0)

我认为这段代码可以使用,但我没有测试它,但你可以测试它并给我一个反馈吗

&#13;
&#13;
date = new Date('2017-05-03T06:31:46.687123+00:00');
year = date.getFullYear();
month = date.getMonth() + 1;
dt = date.getDate();

if (dt < 10) {
  dt = '0' + dt;
}
if (month < 10) {
  month = '0' + month;
}

console.log(year + '-' + month + '-' + dt);
&#13;
&#13;
&#13;

你也可以裁剪日期

dat.toISOString().substring(0, 10)

答案 3 :(得分:0)

当我找到这个库时 - https://date-fns.org/我更喜欢它而不是moment.js。 Date-fns是模块化的,您只能导入一种方法。与非模块化的时刻相比,这可以显着减少束大小.js:

import format from 'date-fns/format';
format('2017-05-03T06:31:46.687123+00:00', 'YYYY-MM-DD');