有没有办法使用Joda将格式为“YYYY-MM-dd”的日期转换为“YYYY-MM-dd HH:mm:ss”?
例如:“2016-01-21”至“2016-01-21 00:00:00”
答案 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"的正确方法。信息(但不是瞬间)是LocalDateTime
。 DateTime
表示即时。有了这些基本的了解:
回答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";