2017-08-11 4 views
0

夏時間2:00〜3:00はハイチャートでは問題ありません。私は以下のデータを持っています。ハイチャート:日中の保存時間が間違っているキャンドルチャートDST

[new Date('2017/03/12 01:00:00').getTime(), 10], 
    [new Date('2017/03/12 02:00:00').getTime(), 20], 
    [new Date('2017/03/12 03:00:00').getTime(), 30], 
    [new Date('2017/03/12 04:00:00').getTime(), 40], 
    [new Date('2017/03/12 05:00:00').getTime(), 50] 

チェックフィドル

http://jsfiddle.net/SurenderK/ko8dk2fd/4/

enter image description here

+0

私はそれがうまくレンダリングされるようです。 APIリファレンス:http://api.highcharts.com/highcharts/global.useUTC –

+1

それは間違ってレンダリングされているわけではありません - 'getTime()'へのあなたの呼び出しは2:00と3:00:1489302000000'の同じ値を返しています。私はそれがなぜなのか分かりませんが、 'useUTC'設定に関係なく同じ動作をします。 http://jsfiddle.net/ko8dk2fd/5/ – jlbriggs

+0

午後3時に夏時間が行われ、時計が2時に戻されるので同じ値です。 – ewolden

答えて

0

私はこれを回避する方法を見つけました。問題は、私たちが送る縦軸です。新しいDate()がDSTの2:00と3:00を同じ時間にカバーするためです。だから、ミリ秒単位で右の縦座標を送信する必要があります。

時間文字列をUTCに変換し、タイムゾーンオフセットを戻す関数convertInMillを使用しました。フィドル以下

var convertInMill = function(stringDate) { 
    var obj, year, mnth, day, hr, min, sec, timeZoneOffset, timeInMillS; 

    timeZoneOffset = 1; // machine timezone offset with UTC timezone 

    obj = stringDate.split(/[\s/:-]+/); 
    year = obj[0]; 
    mnth = obj[1]; 
    day = obj[2]; 
    hr = obj[3]; 
    min = obj[4]; 
    sec = obj[5]; 

    timeInMillS = Date.UTC(year, mnth - 1, day, hr, min, sec) + (timeZoneOffset * 3600000); 

    return timeInMillS; 
} 

シリーズ日付

series: [{ 
    data: [ 
    [convertInMill('2017/03/12 00:00:00'), 10], 
    [convertInMill('2017/03/12 01:00:00'), 20], 
    [convertInMill('2017/03/12 02:00:00'), 30], 
    [convertInMill('2017/03/12 03:00:00'), 40], 
    [convertInMill('2017/03/12 04:00:00'), 50] 
    ] 
}]`` 

私のために正常に動作しています。

http://jsfiddle.net/SurenderK/ko8dk2fd/11/

関連する問題