我在尝试使用 d3.time.format 格式化日期时收到 JavaScript 错误 "d.getMonth is not a function"
I'm getting JavaScript error "d.getMonth is not a function" when trying to format a date using d3.time.format
我有一个日期值 2016-02-18
,我想将其转换为 Feb 18
。
我试过下面的代码,但是 returns 一个错误,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 is not a function at d3_time_formats.b
(d3.js:2517) at format (d3.js:2431)
您需要将 Date
对象传递给 format
函数(参见 documentation):
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
(另见 this Fiddle)
所以,基本上,您根本不需要 dateLast.replace
或 Date.parse
。您可以直接使用日期字符串作为 new Date()
.
的输入
普通 JS 方式:
就个人而言,我什至根本不会使用 d3(或任何其他库)来格式化日期。您可以使用大致相同数量的代码在 vanilla 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
(另见 this Fiddle)。
我有一个日期值 2016-02-18
,我想将其转换为 Feb 18
。
我试过下面的代码,但是 returns 一个错误,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 is not a function at d3_time_formats.b (d3.js:2517) at format (d3.js:2431)
您需要将 Date
对象传递给 format
函数(参见 documentation):
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
(另见 this Fiddle)
所以,基本上,您根本不需要 dateLast.replace
或 Date.parse
。您可以直接使用日期字符串作为 new Date()
.
普通 JS 方式:
就个人而言,我什至根本不会使用 d3(或任何其他库)来格式化日期。您可以使用大致相同数量的代码在 vanilla 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
(另见 this Fiddle)。