正确的方法来设置和获取小时,分钟,秒(The correct way to set and get

2019-07-03 18:39发布

我试图得到一些信息从数据库中,然后使用这些信息来得到一些统计数据。

我想基于几个小时的时间间隔来获得的统计数据,因此我有一个创建了一个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);

但上述日期规定已被弃用,所以我要学会“正确”的方式做到这一点。

Answer 1:

使用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/ 。



Answer 2:

获取日期时间从数据库

从数据库中获取日期时间数百答案得到解决。 请搜索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的构造函数。



文章来源: The correct way to set and get hour, minutes, sec