4

我陷入了冲突。我有一个生成 24 小时时间表的时间表,但问题是,在 11 月 3 日凌晨 2 点,时间将从凌晨 2 点变为凌晨 1 点,这意味着减去一个小时。我怎样才能在 Java 中处理那件事。我从第三方得到的时间表说......

  1. 01:05 AM(第一场演出)
  2. 01:05 AM(第二场演出)
  3. 03:05 AM(第三场演出)等等。

第二场应该是2:05,但由于时间变化,它是1:05。相同的时间导致异常。请帮助我如何处理这种情况。

谢谢


以下是我在 Apache FOP 中使用 XSL 文档生成 PDF 计划时遇到的错误。

     Caused by: java.lang.IndexOutOfBoundsException: Index: 450, Size: 421
     at java.util.ArrayList.RangeCheck(ArrayList.java:547)
     at java.util.ArrayList.get(ArrayList.java:322)
     at org.apache.fop.layoutmgr.table.ColumnSetup.getXOffset(ColumnSetup.java:224)
     at org.apache.fop.layoutmgr.table.TableContentLayoutManager.getXOffsetOfGridUnit(
     TableContentLayoutManager.java:603) at              
     org.apache.fop.layoutmgr.table.TableContentLayoutManager$RowPainter.
    addAreasForCell(TableContentLayoutManager.java:981)
at   org.apache.fop.layoutmgr.table.TableContentLayoutManager$RowPainter.
    addAreasAndFlushRow
    (TableContentLayoutManager.java:943)
at org.apache.fop.layoutmgr.table.TableContentLayoutManager$RowPainter.
    handleTableContentPosition(TableContentLayoutManager.java:800)
at org.apache.fop.layoutmgr.table.TableContentLayoutManager.iterateAndPaintPositions
    (TableContentLayoutManager.java:754)
at org.apache.fop.layoutmgr.table.TableContentLayoutManager.addAreas
    (TableContentLayoutManager.java:687)
at org.apache.fop.layoutmgr.table.TableLayoutManager.addAreas
    (TableLayoutManager.java:346)
at org.apache.fop.layoutmgr.AreaAdditionUtil.addAreas(AreaAdditionUtil.java:116)
at org.apache.fop.layoutmgr.FlowLayoutManager.addAreas(FlowLayoutManager.java:297)
at org.apache.fop.layoutmgr.PageSequenceLayoutManager$PageBreaker.addAreas
    (PageSequenceLayoutManager.java:356)
at org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:507)
at org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:370)
at   org.apache.fop.layoutmgr.PageSequenceLayoutManager$PageBreaker.doPhase3
    (PageSequenceLayoutManager.java:369)
at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:345)
    at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:263)

只有这个计划引发了错误。所以我的猜测是因为时间的变化。任何想法如何适应/解决这个问题。

4

1 回答 1

2

11 月 3 日凌晨 2 点,时间将从凌晨 2 点变为凌晨 1 点,这意味着减去一个小时。我怎样才能在Java中处理那个东西

在某些地方,当地时间会改变,而在其他地方则不会。时间本身并没有改变,只是当地对“当前时间”表示的当地解释(它本身保持相当恒定,或者在我们生活的这个不精确旋转的岩石球上尽可能保持不变)。

关键是,你不应该减去任何东西。因为基础数据中的任何内容实际上都没有发生变化,只有该数据的本地视图。

您如何存储日期/时间值?如果您没有为基础数据使用UTC 时间,那么您应该使用。由于您当前面临的原因,以及其他非常相似的原因,这些原因会产生其他非常相似的问题。关键是将存储的实际数据与任何特定用户对该数据的视图分开。

使用以通用格式存储的基础日期/时间数据,您可以在需要时即时转换它,通常用于显示目的。(有时也用于本地计算。)像Joda Time这样的图书馆对此非常有用,并且已经投入了大量的时间和精力来理解和解决您当前面临的问题。

于 2013-10-29T17:31:19.133 回答