[英]date object returns different date when parsing using D3.time.format
[英]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.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.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
(另見小提琴 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.