首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >D3.js中的日期格式

D3.js中的日期格式
EN

Stack Overflow用户
提问于 2013-07-18 19:15:41
回答 3查看 61.2K关注 0票数 26

我在csv中有一个列( date ),它将日期存储在"2003-02-01"(y-m-d)中。我想将日期格式化为像2003年4月那样的月份和年份。我该怎么做?

代码语言:javascript
复制
var format = d3.time.format("%m-%Y");
data.forEach(function(d,i) {
d.date = format(d.date);
});

我收到以下错误信息:TypeError: n.getFullYear is not a function Line: 5

csv文件包含值:

代码语言:javascript
复制
200,300,400,288,123,2003-01-01
300,700,600,388,500,2003-02-01

这里的问题是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-18 22:25:35

Javascript不会自动将CSV文件中的值识别为日期,只是将它们作为字符串读入。d3's time functions使得将它们转换成datetime objects变得非常容易

代码语言:javascript
复制
> parseDate = d3.time.format("%Y-%m-%d").parse
> parseDate('2003-01-01')
Wed Jan 01 2003 00:00:00 GMT-0600 (Central Standard Time)

为了按照您的需要格式化日期,我们需要采用另一种方式,从date对象到字符串:

代码语言:javascript
复制
> formatDate = d3.time.format("%b-%Y")
> formatDate(parseDate('2003-01-01'))
"Jan-2003"

我建议在程序中用date对象表示日期,只有在需要显示时才将其格式化为字符串。

票数 34
EN

Stack Overflow用户

发布于 2015-08-31 01:24:24

在Adam answer中,下面是一个小辅助函数,用于将时间字符串从一种格式转换为另一种格式:

代码语言:javascript
复制
var formatTime = function(input, formatInput, formatOutput){
    var dateParse = d3.time.format(formatInput).parse;
    var dateFormat = d3.time.format(formatOutput);
    return dateFormat(dateParse(input));
};

使用:

代码语言:javascript
复制
formatTime("2003-01-01", "%Y-%m-%d", "%b-%Y");

// output -> "Jan-2003"
票数 2
EN

Stack Overflow用户

发布于 2018-11-13 04:39:54

在D3Js v3中,这对我很有效:

代码语言:javascript
复制
var s = "2018-11-01T19:37:55Z";

d3.time.format("%Y-%m-%dT%H:%M:%SZ").parse(s);

// Thu Nov 01 2018 19:37:55 GMT-0700 (Pacific Daylight Time)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17721929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档