Java 夏令时导致系统出现问题

Java 夏令时导致系统出现问题,java,dst,Java,Dst,我陷入了冲突。我有一个24小时的时间表,但问题是,在11月3日凌晨2点,时间将从凌晨2点变为凌晨1点,这意味着减去一小时。我如何用Java处理这件事。我从第三次聚会上得到的日程安排是 凌晨1时05分(第一场) 凌晨1时05分(第二场) 凌晨3:05(第三场)等 第二场演出应该是2:05,但由于时间的变化,现在是1:05。相同的时间导致异常。请帮助我如何处理这种情况 谢谢 下面是我在ApacheFop中使用XSL文档生成PDF计划时遇到的错误 Caused by: java.lang.

我陷入了冲突。我有一个24小时的时间表,但问题是,在11月3日凌晨2点,时间将从凌晨2点变为凌晨1点,这意味着减去一小时。我如何用Java处理这件事。我从第三次聚会上得到的日程安排是

  • 凌晨1时05分(第一场)
  • 凌晨1时05分(第二场)
  • 凌晨3:05(第三场)等
  • 第二场演出应该是2:05,但由于时间的变化,现在是1:05。相同的时间导致异常。请帮助我如何处理这种情况

    谢谢


    下面是我在ApacheFop中使用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)
    
    只有此计划引发了错误。我猜是因为时间的变化。你知道如何适应/解决这个问题吗

    11月3日凌晨2点,时间将从凌晨2点变为凌晨1点,这意味着减去一小时。我如何用Java处理这个问题

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

    关键是,你不应该减去任何东西。因为基础数据中没有任何内容在实际更改,所以只有该数据的本地视图

    如何存储日期/时间值?如果您没有为您的基础数据使用,您应该这样做。因为你目前面临的原因,以及其他非常相似的原因,这些原因会产生其他非常相似的问题。重点是将存储的实际数据与任何特定用户对该数据的看法分开


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

    向我们展示您现在正在做的事情。请添加代码、所需结果(显式)以及遇到的异常的任何堆栈跟踪。谢谢。您应该了解这个问题与Java无关,而是与DST有关。此外,没有代码可以帮您避免这种情况,因为您使用的GMT/UTC基本上不存在11月3日02:00。如果要显示今天(以及将来)的凌晨2:00,必须手动将其构建为
    String
    或创建自己的时间表示形式。通常,您希望以UTC存储日期/时间值,并在用于本地目的(例如显示用户的日程)时转换为本地时间。正如你所发现的,“当地时间”可能有一些怪癖。因此,最好有一个采用标准日期/时间表示法(UTC)的库,并将其转换为当地时间。有一些非常方便的库可以帮助进行转换:发生了什么异常?您正在生成以小时命名的文件吗?你用哪节课来上课?日期,日历?