2017-10-04 24 views
0

我试图使用d3.timeFormat()格式转换这样一个日期:2017-09-19T00:00:00为更具可读性:9月19日,2017年我试着与没有运气以下代码许多变化:D3 v4 - 试图在我的数据文件'2017-09-19T00:00:00'中将此格式转换为更具可读性的日期'2017年9月19日'

.append('td') 
    .text(function (d, i) { 
     if (i === 0) { 
      var parseDate = d3.timeFormat("%m %d, %Y"); 
      return parseDate(d.value) 
     } 
     else { 
      return d.value; 
     } 

    }); 

这里是什么它返回:0NaN NaN NaN。

我猜我的价值是一个字符串,我需要将其转换为日期/时间对象,然后可以根据需要呈现/格式化,但我不知道如何使它工作?再说一遍,我可能是错的,因为我是一个UX用户,而不是交易的程序员。

任何帮助解释我应该如何处理这是非常感谢。谢谢。

回答

1

是的,你需要将字符串转换为日期。另外我想你想要%b为简短月份:

var aDate = new Date(d.value) 
var parseDate = d3.timeFormat("%b %d, %Y"); 
console.log("Date: ", parseDate(aDate)) 

// Prints: 
// Date: "Sept 18, 2017" 
+0

工作就像一个魅力!谢谢。因此,代码示例中的第一行是将字符串转换为日期对象,第二行解析并设置格式,对吗?只是想确保我理解将来使用的语法:)。 –

+0

第一行从字符串中创建一个日期对象。第二行创建一个格式化函数,在第三行中用'parseDate(aDate)'调用。 –

+0

没有必要转换为日期,OP可以重新格式化字符串而不生成Date对象。使用内置解析器[*不推荐*](https://stackoverflow.com/a/2587398/257182)。 – RobG

相关问题