繁体   English   中英

尝试使用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

我有一个日期值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(或任何其他库)来格式化日期。 您可以使用大约相同数量的代码在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 

(另见小提琴 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM