【问题标题】:joda + how can we override epoch date with todays datejoda + 我们如何用今天的日期覆盖纪元日期
【发布时间】:2013-11-11 00:00:53
【问题描述】:

我有一个要求,我需要覆盖日期

当我使用 SimpleDateFormat 解析时间(hh:mm:ss)时,我得到的是日期对象(Thu Jan 01 hh:mm:ss IST 1970) 我想用今天的日期(没有时间)覆盖纪元日期。

joda/jdk中有没有可以帮我做的api或者方法

【问题讨论】:

标签: java date jodatime


【解决方案1】:

基本上,您不能,但您可以做的是将“时间”转换中的值与另一个日期(例如今天)合并...例如

try {
    Date date = new SimpleDateFormat("hh:mm:ss").parse("13:30:51");
    System.out.println(date);

    Calendar time = Calendar.getInstance();
    time.setTime(date);

    Calendar today = Calendar.getInstance();
    today.set(Calendar.HOUR_OF_DAY, time.get(Calendar.HOUR_OF_DAY));
    today.set(Calendar.MINUTE, time.get(Calendar.MINUTE));
    today.set(Calendar.SECOND, time.get(Calendar.SECOND));

    System.out.println(today.getTime());
} catch (ParseException ex) {
    ex.printStackTrace();
}

这可能是一种用更少代码实现这一点的绝妙方法,但我试图避免使用过时的方法。

对我来说,这输出...

Thu Jan 01 13:30:51 EST 1970
Thu Oct 31 13:30:51 EST 2013

但请注意,这不会重置 today Calendar 的毫秒值,以防万一这很重要...

【讨论】:

  • 警告:通过直接设置日历实例的属性,必须检查非法日期。 (给定月份中是否存在日期?给定日期是否存在小时(夏令时问题)?等)
猜你喜欢
  • 2018-10-31
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2015-12-24
  • 2014-02-08
  • 1970-01-01
相关资源
最近更新 更多