尝试使用 d3.time.format 格式化日期时,我收到 JavaScript 错误“d.getMonth 不是一个

I'm getting JavaScript error "d.getMonth is not a function" when trying to format a date using d3.time.format

本文关键字:getMonth 错误 JavaScript 一个 d3 time format 格式化 日期      更新时间:2023-09-26

>我有一个日期值2016-02-18,我想将其转换为Feb 18 .

我尝试了以下代码,但它返回了一个错误,指出get.month不是函数。我也尝试过使用 format.parse() ,但这也不起作用。

我的代码 :

var dateLast = "2016-02-18";
var date = Date.parse(dateLast.replace(/-/g,"/"));
var format =  d3.time.format("%b-%d");
var dateConvert = format(date);
console.log(dateConvert);

错误消息 :

TypeError: d.getMonth 不是 d3_time_formats.b 中的函数 (d3.js:2517) 格式为 (d3.js:2431)

您需要将Date对象传递到format函数中(请参阅文档):

var dateLast = "2016-02-18";
var date = Date.parse(dateLast.replace(/-/g,"/"))
var format = d3.time.format("%b-%d");
var dateConvert = format(new Date(date))
console.log(dateConvert)

D3.js 方式:

使用d3.time.format,实现目标的最有效方法是:

var dateLast = "2016-02-18";
var format = d3.time.format("%b %d");
var dateConvert = format(new Date(dateLast));
alert(dateConvert); // Output : Feb 18

(另见这首小提琴

因此,基本上,您根本不需要此dateLast.replaceDate.parse。您可以直接使用日期字符串作为new Date()的输入。


香草JS方式:

就个人而言,我什至根本不会使用 d3(或任何其他库)来格式化日期。你可以在普通JS中使用大约相同数量的代码来做到这一点:

var dateLast = "2016-02-18";
var format = { month : 'short', day : 'numeric' };
var dateConvert = new Date(dateLast).toLocaleDateString('en-US', format);
alert(dateConvert); // Output : Feb 18

(另见这首小提琴)。