首页 > 解决方案 > 如何为最近的加拿大 spring forwrd-transition for 2020a tz 编写 junit 测试用例

问题描述

我想知道如何为加拿大的 spring forwrd-transition 编写 JUnit 测试用例。请参阅以下信息

以 America/Whitehorse 和 America/Dawson 为代表的加拿大育空地区,从 2020 年 3 月 8 日的春季向前过渡开始,全年前进至-07,并不会在 2020 年 11 月 1 日回落

请参阅此链接https://www.iana.org/time-zones

我需要 Java 7 中的代码,我需要用 Joda-Time 编写代码。

标签: unit-testingjunittimezone

解决方案


@ole 该断言语句不是可概括的断言。我想我们可以在 11 月 1 日和前一天做这个计算。我的想法是,如果我们从另一个中减去值,我们将得到-1,0,+1。所以我们可以检测到春天的前进,正常日和后退。主要是我需要在乔达时间写。下面的代码是不是不正确。因为 getoffset 没有像您在代码中编写的那样得到。

    DateTimeZone timezone = DateTimeZone.forID("America/Whitehorse");
    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss").withZone(timezone);
    DateTime dateTimeStart = formatter.parseDateTime("2020-11-1T01:00:00");
    dateTimeStart.withZone(timezone).withLaterOffsetAtOverlap();
    DateTime dateTimeStop = formatter.parseDateTime("2020-10-31T01:00:00");
    dateTimeStop.withZone(timezone).withLaterOffsetAtOverlap();
    assertEquals((dateTimeStart.getMillis() / 10000), (dateTimeStop.getMillis() / 10000));

推荐阅读