有没有办法将时间和日期变量转换为日期时间?
我在两个 DateTime 变量之间有一个周期,对于该周期中的每个日期,我想在该日期中存储一个带有开始 DateTime 和结束 DateTime 的周期,因此一天可以有多个由 DateTime 定义的周期。
似乎无法弄清楚如何将日期和时间组合到日期时间。
提前致谢!
普通的 javaDate
和Joda-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);
有关Joda-Time 的更多信息。
如果您有两个String
对象,其中 1 包含Date
和另一个Time
,您可以组合 2 个字符串并使用SDF对其进行解析并获取Date
对象,然后您可以将其转换为DateTime
.
使用此修复它:
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;
}
即使这个问题有点老并且已经回答了,我也找不到令人满意的解决方案。解决这个问题最好的方法可能是下面的代码(不需要任何解析和异常处理):
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());
}
我很确定您可以找到如何分别构建日期和时间实例。
但是,在 datetime 对象本身上,您可以指定以下内容。
dateTimeObject = dateTimeObject.withHourOfDay(12);
dateTimeObject = dateTimeObject.withMinuteofHour(59);
dateTimeObject = dateTimeObject.withSecondOfMinute(59);
希望这可以帮助!
使用现代 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)。
DateTime dateTime = new DateTime("yyyy-MM-dd");.
System.out.println("============> " + dateTime.toString());
输入:2018-01-04
输出:=============> 2018-01-05T00:00:00.000+05:30