2

您如何转换 BST(当前日期)中的两个日期和 GMT 中的另一个日期,以便可以使用日历日期 before() 和 after() 方法进行比较?我不知道 BST 是否指的是英国夏令时。我正在使用英语设置的笔记本电脑上运行。我不知道如何最好地进行比较以查看一个是否大于另一个或等于。我认为时区是我成功使用日历日期 after() 和 before() 方法的问题。我正在根据 2 个日历检查相等性。

我想比较日期并且一直在使用公历。我有 3 个公历日期,从第一个日期减去 78 个,从第二个日期减去 48 个,从 HOURS_OF_DAY 减去第三个日期的 24 个。这些日期为格林威治标准时间。然后我得到我当前的日期,这是在 BST。我希望确定我当前的日期,即预订日期在 3 个日期内,即 78 小时、48 小时和 24 小时之内。我希望用 Java.Util.Date 做到这一点

感激地收到任何帮助

4

2 回答 2

2

关于什么:

Calendar calBst = new GregorianCalander();
calBst.setDate(date1);
calBst.setTimezone(TimeZone.getTimeZone("BST");

Calendar calGmt = new GregorianCalander();
calGmt.setDate(date2);
calGmt.setTimezone(TimeZone.getTimeZone("GMT");
calBst.before(calGmt);
于 2012-04-06T14:30:15.570 回答
0

我有同样的问题,找到答案并不明显。我们现在在生产中使用这个解决方案,它工作正常。它基于jodatime

public static Date convertDateTimeZone(Date date, TimeZone currentTimeZone, TimeZone newTimeZone) {
    return convertJodaTimezone(new LocalDateTime(date), DateTimeZone.forTimeZone(currentTimeZone), DateTimeZone.forTimeZone(newTimeZone));
}

public static Date convertDateTimeZone(Date date, TimeZone newTimeZone) {
    return convertDateTimeZone(date, null, newTimeZone);
}

public static Date convertJodaTimezone(LocalDateTime date, String srcTz, String destTz) {
    return convertJodaTimezone(date, DateTimeZone.forID(srcTz), DateTimeZone.forID(destTz));
}

public static Date convertJodaTimezone(LocalDateTime date, DateTimeZone srcTz, DateTimeZone destTz) {
    DateTime srcDateTime = date.toDateTime(srcTz);
    DateTime dstDateTime = srcDateTime.withZone(destTz);
    return dstDateTime.toLocalDateTime().toDateTime().toDate();
}

您所要做的就是使用第一种方法将您的日期转换为特定的公共时区并进行比较。

要获取时区实例,您只需:

TimeZone.getTimeZone("BST");
于 2012-04-06T14:32:02.110 回答