使用Joda将Date转换为DateTime

时间:2016-10-11 00:55:34

标签: java jodatime

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

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

2 个答案:

答案 0 :(得分:3)

使用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);

答案 1 :(得分:1)

你的问题不明确:

您是否只想格式化" 代表日期的内容"到时间为" 00:00:00"?

的字符串

或者您是否正在尝试转换" 代表日期的内容"进入" 代表日期+时间的东西,00:00:00作为时间"?

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

或者您是否尝试使用" YYYY-MM-dd"格式转换日期字符串?到另一个带有日期+时间的字符串,00:00:00作为时间?

还是其他什么?

在Joda中,表示日期的正确方法是LocalDate,以及表示" date + time"的正确方法。信息(但不是瞬间)是LocalDateTimeDateTime表示即时。有了这些基本的了解:

回答Q1:

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

回答Q2:

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

回答第3季:

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

回答Q4:

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