我在csv中有一个列(日期),它将日期存储在"2003-02-01"(ymd)中.我想像2003年4月那样格式化月份和年份的日期.我该怎么做?
var format = d3.time.format("%m-%Y");
data.forEach(function(d,i) {
d.date = format(d.date);
});
Run Code Online (Sandbox Code Playgroud)
我收到以下错误错误: TypeError: n.getFullYear is not a function Line: 5
csv文件包含值:
200,300,400,288,123,2003-01-01
300,700,600,388,500,2003-02-01
Run Code Online (Sandbox Code Playgroud)
这是什么问题?
Ada*_*rce 30
Javascript不会自动将CSV文件中的值识别为日期,只是将其作为字符串读取.d3的时间函数使它们很容易转换为datetime对象:
> parseDate = d3.time.format("%Y-%m-%d").parse
> parseDate('2003-01-01')
Wed Jan 01 2003 00:00:00 GMT-0600 (Central Standard Time)
Run Code Online (Sandbox Code Playgroud)
要按照您的需要格式化日期,我们需要采用另一种方式,从日期对象到字符串:
> formatDate = d3.time.format("%b-%Y")
> formatDate(parseDate('2003-01-01'))
"Jan-2003"
Run Code Online (Sandbox Code Playgroud)
我建议使用日期对象在程序中表示日期,并在需要显示时将它们格式化为字符串.
D3 版本 4 现在有不同的时间方法。
https://keithpblog.org/post/upgrading-d3-from-v3-to-v4/ https://github.com/d3/d3/blob/master/CHANGES.md
您的来源日期
var d = {created_time : "2018-01-15T12:37:30+0000"}
Run Code Online (Sandbox Code Playgroud)
该日期的结构 = %Y-%m-%dT%H:%M:%S%Z
我用“2018-01-15T12:37:30+0000”搜索谷歌,它的建议提供了日期结构字符串。便利。
创建一个 timeParser 将您的日期字符串转换(解析)为日期对象
var parseDate = d3.utcParse("%Y-%m-%dT%H:%M:%S%Z")
//parseDate(d.created_time)
Run Code Online (Sandbox Code Playgroud)
现在创建一个时间格式化程序来返回一个格式化的日期字符串以供显示。
var formatDate = d3.timeFormat("%b-%Y")
return formatDate(parseDate(d.created_time))
Run Code Online (Sandbox Code Playgroud)
即 1970 年 1 月