如何在D3.JS或片刻中解析像'2009-09-13'这样的日期

时间:2017-03-04 19:03:23

标签: javascript date d3.js

我有几个日期作为字符串,格式为:YYYY-MM-DD。例如:

var origDate = '2009-09-13'

我想解析它们,以便它们只是作为月份(缩写或整月),日期,年份写出: 9月。 9,2009

..有没有办法在D3.JS或Moment.JS中执行此操作?

现在我正在使用这个D3公式来解析日期:

var format = d3.time.format("%Y-%m-%d").parse;

但当我这样做时:format(origDate), 我得到了很长的约会时间: enter image description here

3 个答案:

答案 0 :(得分:2)

有没有办法在D3.JS中执行此操作?

是。你的行

var format = d3.time.format("%Y-%m-%d").parse;

正在创建一个日期对象。您需要将格式应用于对象以获取所需的输出字符串:



// working date:
var string = '2009-05-01';

// set up a format
var format = d3.time.format("%Y-%m-%d");

// convert the date string into a date object:
var date = format.parse(string);

// output the date object as a string based on the format:
console.log(format(date));

// use the desired format
var format1 = d3.time.format("%B %d, %Y");

// output a date as a string in the desired format
console.log(format1(date));

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用时刻就像这样:

var origDate = '2009-09-13'

mDate = moment(origDate);

console.log(mDate.format("DD/MM/YYYY"));

https://jsfiddle.net/0p2c6zjo/

答案 2 :(得分:1)

Vanilla JS

在字符串上使用new Date构造函数(它采用支持的格式),然后使用格式函数将每个月映射到其缩写并包含其他信息。

&#13;
&#13;
var abbr = 'Jan. Feb. Mar. Apr. May June July Aug. Sept. Oct. Nov. Dec.'.split(' ')

function format (date) {
  return abbr[date.getUTCMonth()] + ' ' + date.getUTCDate() + ', ' + date.getUTCFullYear()
}

var origDate = '2009-09-13'

console.log(
  format(new Date(origDate))
)
&#13;
&#13;
&#13;

Moment.js

Moment.js对象具有format函数,该函数采用格式字符串。有关您可以使用的完整参数列表,请参阅the documentation on displaying

&#13;
&#13;
var origDate = '2009-09-13'

console.log(
  moment.utc(origDate).format('MMM. D, YYYY')
)
&#13;
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
&#13;
&#13;
&#13;