簡體   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