我有一个日期值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)
答案 0 :(得分:4)
您需要将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)
答案 1 :(得分:2)
使用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()
的输入。
就个人而言,我根本不会使用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)。