从数据库中获取日期时间
从数据库获取日期时间已在数百个答案中得到解决。请搜索 StackOverflow。专注于java.sql.Timestamp
。
要解决问题标题的主题,请继续阅读。
乔达时间
如果您使用Joda-Time或与 Java 8 捆绑在一起的 java.time 包(受 Joda-Time 的启发),则容易得多。与 Java 捆绑在一起的 java.util.Date 和 .Calendar 类是出了名的麻烦、混乱和缺陷。
时区至关重要。与 java.util.Date 不同,Joda-Time 和 java.time 都为其日期时间对象分配时区。
下面是一些示例代码,展示了在 Joda-Time 2.5 DateTime 对象上设置时间的多种方法。
DateTimeZone zoneMontreal = DateTimeZone.forID( "America/Montreal" ); // Specify a time zone, or else the JVM's current default time zone will be assigned to your new DateTime objects.
DateTime nowMontreal = DateTime.now( zoneMontreal ); // Current moment.
DateTime startOfDayMontreal = nowMontreal.withTimeAtStartOfDay(); // Set time portion to first moment of the day. Usually that means 00:00:00.000 but not always.
DateTime fourHoursAfterStartOfDayMontreal = startOfDayMontreal.plusHours( 4 ); // You can add or subtract hours, minutes, and so on.
DateTime todayAtThreeInAfternoon = nowMontreal.withTime(15, 0, 0, 0); // Set a specific time of day.
转换
如果您绝对需要 java.util.Date 对象,请从 Joda-Time 转换。
java.util.Date date = startOfDayMontreal.toDate();
要从 juDate 到 Joda-Time,请将 Date 对象传递给 Joda-Time DateTime 的构造函数。