4

DateAxisを使用すると、正常に機能します。

// From: 2/5/13 02:00:00 PM (+1), To: 2/5/13 03:00:00 PM (+1)
// Configuring dataset
Timezone tz = new SimpleTimeZone(1, "Test");
TimeSeriesCollection dataset = new TimeSeriesCollection(tz);
TimeSeries timeSeries = new TimeSeries("Series1");
...
timeSeries.add(new Millisecond(new Date(timestamp1), tz, locale), value1);
timeSeries.add(new Millisecond(new Date(timestamp2), tz, locale), value2);
timeSeries.add(new Millisecond(new Date(timestamp3), tz, locale), value3);
...
// Setting axis timezone
((DateAxis) chart.getXYPlot().getDomainAxis()).setTimeZone(tz);
((DateAxis) chart.getXYPlot().getDomainAxis()).setRange(new DateRange(
           from, to), true, true);

DateAxisチャート

しかし、PeriodAxisで同じことを行おうとすると、間違ったタイムゾーンが表示されます。コンピューターからタイムゾーンを取得しているようです(-3)。

// From: 2/5/13 02:00:00 PM (+1), To: 2/5/13 03:00:00 PM (+1)
// Configuring dataset
Timezone tz = new SimpleTimeZone(1, "Test");
TimeSeriesCollection dataset = new TimeSeriesCollection(tz);
TimeSeries timeSeries = new TimeSeries("Series1");
...
timeSeries.add(new Millisecond(new Date(timestamp1), tz, locale), value1);
timeSeries.add(new Millisecond(new Date(timestamp2), tz, locale), value2);
timeSeries.add(new Millisecond(new Date(timestamp3), tz, locale), value3);
...
// Setting periodAxis
PeriodAxis periodaxis = new PeriodAxis("");

periodaxis.setFirst(new Millisecond(new Date(from), tz));
periodaxis.setLast(new Millisecond(new Date(to), tz));

periodaxis.setTimeZone(tz);

periodaxis.setRange(new DateRange(from, to), true, true);
periodaxis.setAutoRangeTimePeriodClass(Second.class);
PeriodAxisLabelInfo aperiodaxislabelinfo[] = new PeriodAxisLabelInfo[2];
aperiodaxislabelinfo[0] = new PeriodAxisLabelInfo(
        org.jfree.data.time.Minute.class, new SimpleDateFormat("mm"));
aperiodaxislabelinfo[1] = new PeriodAxisLabelInfo(
        org.jfree.data.time.Hour.class, new SimpleDateFormat("HH"));
periodaxis.setLabelInfo(aperiodaxislabelinfo);

chart.getXYPlot().setDomainAxis(periodaxis);

期間軸チャート

4

1 に答える 1

5

この問題を解決する2つの方法を見つけました。

フリスト

SimpleDateFormat:にタイムゾーンを設定する

...
SimpleDateFormat dfMin = new SimpleDateFormat("mm");
dfMin.setTimeZone(tz); // Setting timezone
PeriodAxisLabelInfo aperiodaxislabelinfo[] = new PeriodAxisLabelInfo[2];
aperiodaxislabelinfo[0] = new PeriodAxisLabelInfo(
        org.jfree.data.time.Minute.class, dfMin);
SimpleDateFormat dfHour = new SimpleDateFormat("mm");
dfHour.setTimeZone(tz); // Setting timezone
aperiodaxislabelinfo[1] = new PeriodAxisLabelInfo(
        org.jfree.data.time.Hour.class, dfHour);
periodaxis.setLabelInfo(aperiodaxislabelinfo);
...

2番

また、これをバグとして報告しました。IMO軸はperiodaxis.setTimeZone(tz);命令を尊重する必要があります。この行をPeriodAxis.javaに追加する必要があります。

885        while (p.getFirstMillisecond() <= axisMax) {
886            float x = (float) valueToJava2D(p.getMiddleMillisecond(), dataArea,
887                    edge);
888            DateFormat df = this.labelInfo[band].getDateFormat();

               df.setTimeZone(timeZone); // Missing timezone setting

889            String label = df.format(new Date(p.getMiddleMillisecond()));
890            long first = p.getFirstMillisecond();
891            long last = p.getLastMillisecond();
892            if (last > axisMax) {
于 2013-02-06T14:21:54.533 に答える