11

日付 (x xAxis) はどのように「1025409600000」としてフォーマットされますか? 私は彼らのドキュメントを研究してきましたが、これがどのように機能するのか理解できません.誰かがこれをMMDDYYYYのような「通常の」日付形式に変更する方法を理解するのを手伝ってくれれば、私の人生が楽になります.

これはチャートです: http://nvd3.org/ghpages/stackedArea.html

ドキュメント: https://github.com/mbostock/d3/wiki/Time-Formatting

ありがとう

4

1 に答える 1

13

私はあなたの質問を、1025409600000 がどのように MMDDYY にフォーマットされるのかと解釈しました。それが NV の例で起こっていることです。

あなたが指摘した例では、x 軸の日付はほぼ希望する %m/%d/%Y (または MMDDYY) の形式になっています。x 軸の日付は次の行でフォーマットされています。

chart.xAxis
     .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });

したがって、d3.time.format('%x')は から返される日付の形式を指定します(new Date(d))。あなたが指摘したドキュメントは、フォーマットがどうなるか、つまり「%m/%d/%Y」を返すように見える「%m/%d/% Y %x 」としての日付を教えてくれます。ドキュメントを読んだ後、NVコードが目的の形式を返すと予想していましたが、次の方法で簡単に形式を取得できます。

d3.time.format('%m/%d/%Y')(new Date(d));

new Date(d)日付データを受け取り、JavaScript の日付に変換します。NV の例の日付データは、1970 年 1 月 1 日 00:00:00 UTC (Unix エポック) からのミリ秒数です。このMDNページを参照してください。new Date(1025409600000)コンソールに入力して、これを自分で確認できます。

%m/%d/%Y などの日付形式を D3 に認識させるには、時刻形式を作成してから日付データを解析する必要があります。これは、リンクを提供した D3 Time Formatting ページで説明されています。そこにあるものをあなたの例に適応させます。

必要な時間形式を作成します。

var format = d3.time.format("%m/%d/%Y");

そして、それを使用してデータを解析します:

format.parse(d.Date);

あなたのコードがなければ、これがどこに行く必要があるかを正確に言うことはできませんが、かなり明確なはずです. コンソールでこれを試すこともできます。

お役に立てれば

于 2013-10-19T07:46:06.847 に答える