我试图得到一些信息从数据库中,然后使用这些信息来得到一些统计数据。
我想基于几个小时的时间间隔来获得的统计数据,因此我有一个创建了一个HashSet
由两个Integer
时辰和数据。
为了得到正确的时间我需要的时间从数据库中。 因此,我需要建立某种形式的数据/日历对象。
现在,因为Date
已被弃用,我需要找到一种新的方式来设定小时。
有谁知道我可以实现这一目标?
到目前为止,这种解决方案的工作原理:
Calendar time = Calendar.getInstance();
time.setTime(new Date(2012, 11, 12, 8, 10));
int hour = time.get(Calendar.HOUR);
System.out.println(hour);
但上述日期规定已被弃用,所以我要学会“正确”的方式做到这一点。
使用java.util.Calendar
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 2);
c.set(Calendar.HOUR_OF_DAY, 1);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
或者使用约达时间http://joda-time.sourceforge.net/ 。
获取日期时间从数据库
从数据库中获取日期时间数百答案得到解决。 请搜索StackOverflow的。 注重java.sql.Timestamp
。
为了解决你的问题的标题的话题,请继续阅读。
乔达时间
如果您使用更容易乔达时间或java.time包与Java 8(由乔达时间启发)捆绑在一起。 与Java捆绑与java.util.Date&.Calendar类是出了名的麻烦,混乱,和有缺陷的。
时区是至关重要的。 不像java.util.Date,既乔达-Time和java.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对象,从乔达 - 时间转换。
java.util.Date date = startOfDayMontreal.toDate();
如果要从juDate到约达时间,通过Date对象乔达时间的DateTime的构造函数。