【问题标题】:Compare the current EST to 2PM EST? How?将当前的 EST 与 2PM EST 进行比较?如何?
【发布时间】:2011-05-11 18:27:14
【问题描述】:

所以我有这段代码可以返回当前的 EST

Date easternTime = new Date();
DateFormat format = new SimpleDateFormat("h:mm a");
format.setTimeZone(TimeZone.getTimeZone("EST"));
return format.format(easternTime);

假设它返回x = 12:15PM

我想将x 与美国东部标准时间下午 3:00 进行比较,以查看 x 是在美国东部标准时间下午 3:00 之前还是之后,和/或 x 是在美国东部标准时间下午 3:00 到下午 6:00 之间。有没有办法做到这一点。

我们不必使用java.util.date。我也用calendar 解决问题

【问题讨论】:

    标签: java time timezone


    【解决方案1】:

    我会肯定Joda Time 中这样做。如果您真的想使用内置 API 执行此操作,则需要使用 Calendar 来查找特定时区的本地时间 - 但 Joda 会更简单。

    您将使用特定时区的DateTime,并可能从中获取LocalTime 与您硬编码(或从配置文件等读取)的一些LocalTimes 进行比较)。

    【讨论】:

    • 我知道Calendar 实例的创建成本特别高。您认为Joda Time 在性能和资源方面是否更好?
    • @Harry:可能是——但是当你说它“特别昂贵”时,你的意思是你在担心之前已经对你的应用程序进行了分析/基准测试并检查了这是否真的是一个性能问题? (诚​​然,Joda Time 可能会更快。不过,我会用它来成为更好的 API……)
    • 我正在阅读Effective Java by Bloch,而在item 5,Bloch 提到Calendar 特别昂贵,因此,Bloch 建议将变量从local 更改为static final 字段以避免对象创建。所以我只是想知道 Joda Time 与 Calendar 相比如何。都这样
    【解决方案2】:

    您应该使用日期对象而不是字符串。要比较使用方法 date.after 和 date.before。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多