【问题标题】:Joda: Convert Date and Time to DateTimeJoda:将日期和时间转换为 DateTime
【发布时间】:2013-03-07 15:52:34
【问题描述】:

有没有办法将时间和日期变量转换为日期时间?

我在两个 DateTime 变量之间有一个时间段,对于该时间段中的每个日期,我想在该日期中存储一个时间段,其中包含开始日期时间和结束日期时间,因此一天可以有多个由日期时间定义的时间段。

似乎无法弄清楚如何将日期和时间组合到日期时间。

提前致谢!

【问题讨论】:

  • “时间和日期变量”究竟是什么意思?如果您向我们展示代码而不是描述它会容易得多。
  • java.sql.Time beginTime 和 java.sql.Date beginDate,我想从它们中形成一个 dateTime
  • Luc - 给我们一个你想做的例子。让事情更清楚。

标签: java date datetime time jodatime


【解决方案1】:

普通的 java DateJoda-Time DateTime 应该可以达到目的。

Date date = new Date(); // java.util.Date; - This date has both the date and time in it already.
DateTime dateTime = new DateTime(date);

更多info关于Joda-Time。

如果您有两个 String 对象,其中 1 包含 Date 和另一个 Time,您可以组合 2 个字符串并使用 SDF 解析它并获取 Date 对象,这然后您可以转换为DateTime

【讨论】:

  • 关于最后一段……如果在该日期和时间之间包含T (standard format),则可以将字符串直接传递给DateTime 的构造函数。无需使用 SimpleDateFormat 和 Date 类。只需一行代码。像这样……DateTime dateTime = new DateTime( "2013-01-02T03:04:05", DateTimeZone.UTC );
【解决方案2】:

使用此修复它:

public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) {
    String myDate = date + " " + time;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    java.util.Date utilDate = new java.util.Date();
    try {
        utilDate = sdf.parse(myDate);
    } catch (ParseException pe){
        pe.printStackTrace();
    }
    DateTime dateTime = new DateTime(utilDate);

    return dateTime;
}

【讨论】:

    【解决方案3】:

    java.time

    使用现代 Java 日期和时间 API java.time,这很简单:

        LocalTime time = LocalTime.of(23, 45);
        LocalDate date = LocalDate.of(2019, Month.NOVEMBER, 23);
    
        LocalDateTime combined = date.atTime(time);
        System.out.println(combined);
    

    输出是:

    2019-11-23T23:45

    我知道你问过 Joda-Time。然而,Joda-Time 的主页说:

    请注意,Joda-Time 被认为是一个基本“完成”的项目。 没有计划进行重大改进。如果使用 Java SE 8,请迁移 到java.time (JSR-310)。

    链接

    【讨论】:

      【解决方案4】:

      即使这个问题有点老并且已经回答了,我也找不到令人满意的解决方案。解决这个问题最好的方法可能是下面的代码(不需要任何解析和异常处理):

      public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) {
          DateTime t = new DateTime(time);
          return new DateTime(date).withTime(t.getHourOfDay(), t.getMinuteOfHour(), t.getSecondOfMinute(), t.getMillisOfSecond());
      }
      

      【讨论】:

        【解决方案5】:

        我很确定您可以找到如何分别构造日期和时间实例。

        但是,您可以在 datetime 对象本身上指定以下内容。

        dateTimeObject = dateTimeObject.withHourOfDay(12);
        dateTimeObject = dateTimeObject.withMinuteofHour(59);
        dateTimeObject = dateTimeObject.withSecondOfMinute(59);
        

        希望这会有所帮助!

        【讨论】:

          【解决方案6】:
          DateTime dateTime = new DateTime("yyyy-MM-dd");.
          
          System.out.println("============> " + dateTime.toString());
          

          输入:2018-01-04
          输出:============> 2018-01-05T00:00: 00.000+05:30

          【讨论】:

          • 好像没有回答问题?我把它读成一个结合日期和时间的问题。
          猜你喜欢
          • 1970-01-01
          • 2015-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-04
          • 2013-08-18
          • 1970-01-01
          • 2011-06-07
          相关资源
          最近更新 更多