2014-01-20 96 views
1

enter image description here如果您使用毫秒形式的日期,是否需要將其轉換爲字符串以便Date對象識別它?Javascript日期對象返回1969年12月31日

"values":[ {x:1390636800000 , y:12} , 
      { x:1390640400000 , y:17} , 
      { x:1390644000000 , y:17}, 
      { x:1390647600000 , y:15}, 
      { x:1390651200000 , y:8} ] 

如果是這樣,我如何去轉換它,以便它是由

chart.xAxis 
.axisLabel("Time (s)") 
.tickFormat(function(d){return d3.time.format('%I%p')(new Date(d))}); 

使用得當,它不會吐出月/一千九百六十九分之三十一日期?我試圖將整個對象串聯起來,但這並沒有奏效。有什麼建議麼?感謝您的幫助,和對不起,如果這是一個愚蠢的問題

(編輯),這是我使用不正確顯示時間

var chart; 

nv.addGraph(function() { 
    chart = nv.models.lineChart() 
    .options({ 
    margin: {left: 100, bottom: 100}, 
    x: function(d,i) { return i}, 
    showXAxis: true, 
    showYAxis: true, 
    transitionDuration: 250 
}) 
; 

chart.xAxis 
    .axisLabel("Time (s)") 
    .tickFormat(function(d){return d3.time.format('%m/%d/%y')(new Date(d))}); 

chart.yAxis 
    .tickFormat(d3.format('d')) 
    ; 

d3.select('#chart1 svg') 
    .datum(data1()) 
    .call(chart); 

nv.utils.windowResize(chart.update); 


chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); }); 

return chart; 
}); 

function data1() { 

return [ 
    { 
    "values":[ {x:1390636800000 , y:12} , { x:1390640400000 , y:17} , { x:1390644000000 , y:17}, { x:1390647600000 , y:15}, { x:1390651200000 , y:8} ], 
    "key": "First Dude " 
}, 
{ 
    "values": [ { x:1390636800000 , y:16} , { x:1390640400000 , y:16} , { x:1390644000000 , y:16}, { x:1390647600000 , y:12}, { x:1390651200000 , y:5}], 
    "key": "Second Dude " 
}, 
{ 
    "values": [ { x:1390636800000 , y:5} , { x:1390640400000 , y:5} , { x:1390644000000 , y:5}, { x:1390647600000 , y:3}, { x:1390651200000 , y:1}], 
    "key": "Third Dude " 
} 
, 
{ 
    "values": [ { x:1390636800000 , y:8} , { x:1390640400000 , y:18} , { x:1390644000000 , y:18}, { x:1390647600000 , y:9}, { x:1390651200000 , y:7}], 
    "key": "Fourth Dude " 
} 
]; 

} 
+0

我懷疑還有其他事情正在發生。你能整理出這個問題的一個簡短的例子嗎?特別是,如果您不指定任何格式,軸會打印什麼樣的值? – AmeliaBR

+0

添加了一張圖片來展示我正在處理的事情 – DiamonW

+0

好吧我將盡快更新一個工作示例 – DiamonW

回答

0

日期並不需要數量的工作代碼的millisecounds定投作爲一個字符串:

> new Date(1390651200000) 
Sat Jan 25 2014 07:00:00 GMT-0500 (EST) 

要打印的時間,你要尋找的格式,您需要更改specifier string

> d3.time.format('%I%p')(new Date(1390640400000)) 
"04AM" 
> d3.time.format('%B/%d/%Y')(new Date(1390640400000)) 
"January/25/2014" 
+0

不幸的是這不是我的意思。當我按照我在示例中的方式對它進行格式化時,它應該顯示5個小時以上的x值。相反,它每次只顯示晚上7點,當我格式化它以查看那個日期時,它最終成爲1969年12月31日的日期。我在考慮從我的對象中提取出錯嗎? – DiamonW

+0

您是否嘗試過使用d.x而不是d?如果這不起作用,請嘗試發佈問題的演示。 –

+0

d.x剛剛返回NaN – DiamonW

2

如果以毫秒的形式使用日期,是否需要將其轉換爲字符串才能使Date對象識別它?

不,該值必須是數字(例如1390636800000而不是「1390636800000」)。如果提供了一個字符串,Date將嘗試解析它。

如果向Date構造函數提供了time value,則假定自1970-01-01T00:00:00Z以來的毫秒數。那就是UTC。

所以,如果你是在一個時區UTC說-5:00,然後

new Date(0); 

會返回一個對象與當地的日期和時間1969-12-31T19:00:00UTC,05: 00

相關問題