【问题标题】:alternative to deprecated java date.sethours替代已弃用的 java date.sethours
【发布时间】:2012-12-03 00:47:21
【问题描述】:

我正在使用 2 个 GWT 日期选择器和一个 JAVA 日期对象。我想检查当前日期(来自 now() 函数)是否在日期选择器中选择的日期之间。 我有两个问题:

  1. 如何确保在第二个日期选择器中选择的日期至少与在第一个日期选择器中选择的日期相同或更晚?

  2. 我想在两个日期选择器中设置相同的日期并对照它检查我的当前日期。我试图通过将第二个日期的时间设置为晚上 11:59:59 来做到这一点,但它说 Date.setHours 和 setMinutes 方法已被弃用。

有什么想法吗?感谢任何帮助。

附言请不要告诉我使用日历或任何其他日期功能。我的限制是我需要使用 java.util.Date。

【问题讨论】:

  • 好吧,要么你使用这个不推荐使用的方法,要么你使用 Calendar,或者你使用其他 Datetime 库,比如 Joda time。
  • @Jakub GWT 中没有日历或 Joda。
  • 你试过 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 而不是 date.sethours

标签: java gwt date datepicker


【解决方案1】:

尽管您的 IDE 对此有意见,但使用旧的 java.util.Date 方法并没有那么糟糕。在常规 Java 代码中,是的,请改用 Calendar 类,但由于历史原因,请三思而后行,不要使用那些“已弃用”的方法。

曾几何时,Java 是最酷的孩子——很奇怪,对吧? Web 浏览器没有这样的语言,有人说:“嘿,让我们给他们一种脚本语言,但是叫它什么,我不知道,很酷!”因此,我们得到了 JavaScript - 比 Java 更像是一种类似 Lisp 的语言,但没关系。

借用了一些 API,例如 Date 对象。然后,Java 决定它可以比这更好地处理日期、时间和时区,弃用了诸如 setHours 之类的函数,并转向了我们今天所知道和喜爱的 Calendar、JodaTime 等光明(但令人困惑)的未来.

浏览器虽然有 JavaScript,但正在寻找自己的方式,并继续使用这些方法。有一些 JavaScript 库可以帮助处理日期,但在浏览器运行时中,Date 对象仍然看起来像旧的 java.util.Date

因此,在使用 GWT 时,请在您喜欢的地方使用 Java 编写代码,但请始终记住,您是在 Web 浏览器中 - 底层语言恰好具有使用这些已弃用方法的本机功能 - 而且它们不会去任何地方。同样,即使Object.wait()notify() 是合法的,你也不能使用它们,你的finalize() 也不会被调用——这些只是你在使用Java 组织和维护你的库时需要记住的事情或应用程序,并使用 JavaScript 编译以在 Web 浏览器中运行。

【讨论】:

    【解决方案2】:

    要比较日期,只需使用

    date2.getTime() >= date1.getTime();
    

    请注意,您不能直接比较日期 - Java 允许,但 JavaScript 中存在问题。

    要设置相同的日期,请从一个日期选择器中获取日期,然后将其设置为另一个。

    另请注意,GWT (com.google.gwt.user.datepicker.client.CalendarUtil) 中有一个 CalendarUtil 类,它的功能有限,但在许多情况下仍然非常有用。

    您可以对 Date 对象使用已弃用的方法 - 没有人计划在短期内删除它们。我尽可能使用毫秒来避免它们,但它更容易,例如,使用不推荐使用的方法检查一周中的哪一天。

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2020-03-03
      • 2013-04-28
      • 2012-12-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      相关资源
      最近更新 更多