【问题标题】:Convert Date to DateTime using Joda [duplicate]使用 Joda 将日期转换为日期时间 [重复]
【发布时间】:2016-10-11 00:55:33
【问题描述】:

有没有办法使用 Joda 将格式为“YYYY-MM-dd”的日期转换为“YYYY-MM-dd HH:mm:ss”?

例如:“2016-01-21”到“2016-01-21 00:00:00”

【问题讨论】:

  • 在提问之前,您至少需要搜索此站点,也许还需要搜索 google,并自己尝试解决方案。请阅读How to Ask

标签: java jodatime


【解决方案1】:

使用来自 Joda API 的 DateTimeFormat 类。它可以帮助您将日期格式化为您选择的格式。您可以简单地提供所需的格式,例如在本例中您需要“YYYY-MM-dd HH:mm:ss”。下面的代码适用于 JodaTime 2.0 及更高版本。

DateTime date = DateTime.parse("2016-01-21", DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss"));

这里有两件事,首先我们需要将现有字符串解析为 DateTime 对象,这是通过parse 方法完成的,它还允许一个附加参数,将输出转换为不同的格式。下面给出了更长但更容易理解的实现。

DateTime date = DateTime.parse("2016-01-21");
DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss");
date  = formatter.parseDateTime(string);

【讨论】:

    【解决方案2】:

    你的问题不清楚:

    您是否只想将“代表日期的东西”格式化为时间为“00:00:00”的字符串?

    或者您是否尝试将“代表日期的东西”转换为“代表日期+时间的东西,时间为 00:00:00”? p>

    或者您是否尝试通过忽略原始时间并将时间设置为 00:00:00 来将 java.util.Date 转换为 Joda org.joda.time.DateTime

    或者您是否尝试将格式为“YYYY-MM-dd”的日期字符串转换为另一个日期+时间的字符串,时间为 00:00:00?

    还是别的什么?


    在 Joda 中,表示日期的正确方法是 LocalDate,表示“日期+时间”信息(但不是瞬间)的正确方法是 LocalDateTimeDateTime 代表一瞬间。有了这些基本的了解:

    第一季度的答案:

    String result = DateTimeFormat.forPattern("YYYY-MM-dd", myLocalDate);
    

    第二季度的答案:

    LocalDateTime result = myLocalDate.toLocalDateTime(LocalTime.MIDNIGHT);
    

    第三季度的答案:

    DateTime result = new DateTime(javaUtilDate).withTimeAtStartOfDay();
    

    第四季度的答案:

    String result = dateString + " 00:00:00";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 2012-08-14
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多