【问题标题】:Using Date in Java在 Java 中使用日期
【发布时间】:2023-03-03 07:29:29
【问题描述】:

我的Java 程序中有各种Date 实例。使用 是一种痛苦,但它是必需的。

Date today = new Date(); // Wed Dec 10 14:10:29 EST 2014

Date a = new GregorianCalendar(2014, 11, 10).getTime();
Date b = new GregorianCalendar(2015, 01, 10).getTime();
Date c = new GregorianCalendar(2015, 02, 10).getTime();
Date d = new GregorianCalendar(2015, 03, 10).getTime(); //Fri April 10 00:00:00 EDT 2015
Date e = new GregorianCalendar(2015, 11 ,10).getTime();

我需要弄清楚如何缩短每个时间 (14:10:29) 并将它们转换为 GMT 时间。

我知道today.getTime(); 将是自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,但我不确定如何在没有时间的情况下表示它。

这将使日期之间的比较更容易。谢谢。

【问题讨论】:

  • 你不能做Date a = new GregorianCalendar(...),因为Date不是GregorianCalendar的超类型。
  • 另外,Calendar 月份是从 0 开始的,因此 0 = 一月,1 = 二月,...,11 = 十二月。而以 0 开头的整数文字,例如 0102 被解释为八进制,这不是你想要的。
  • @Jesper GregorianCalendar 似乎与我目前使用的计算工作正常,除了日期
  • 哦,等等,我看到你在 GregorianCalendar 对象上调用 getTime(),它确实返回了 Date
  • 关于八进制数:试试09,你会发现它不会编译。

标签: java date calendar gregorian-calendar


【解决方案1】:

您所要做的就是将 long 值乘以 1 天的 long 值,然后从日期的 long 值中减去它。

如果您有 2014 年 12 月 10 日星期三 14:10:29 EST 2014,那么如果您这样做了

Date today = new Date(); // Wed Dec 10 14:10:29 EST 2014
long timeDiff = today.getTime() % 24 * 60 * 60 * 1000;
today = new Date(today.getTime - timeDiff);

将创建新的今天对象,并删除一天中的时间。

要将它们转换为 GMT,您可以类似地为多头创建新日期。这显然是“日期”的方式来做到这一点。最好的方法是使用日历。

【讨论】:

    【解决方案2】:

    尝试使用日期格式化程序

    SimpleDateFormat df= new SimpleDateFormat("HH:MM:ss");
    df.format(date)
    

    【讨论】:

      猜你喜欢
      • 2016-11-13
      • 2014-09-05
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 2016-11-28
      • 1970-01-01
      相关资源
      最近更新 更多