Java中的日历类

时间:2013-10-03 07:46:13

标签: java calendar

我正在尝试使用Calendar Class打印HOUR_OF_DAY,Minute and Second。 我在我的代码中使用了以下命令。

  System.out.println(
      Calendar.HOUR+" "+
      Calendar.HOUR_OF_DAY+" "+
      Calendar.MINUTE+" "+
      Calendar.SECOND+" "
      );

它给出如下输出:

10 11 12 13 

即使我跑了这么几个小时,也会给出相同的输出。

我认为它将以24小时格式打印当前小时。但我没有得到那个输出。

所以我想知道 HOUR_OF_DAY HOUR 应该打印什么。

请澄清。

6 个答案:

答案 0 :(得分:6)

Calendar.HOURCalendar.HOUR_OF_DAY等只是常量,用于标识日期/时间的各个方面。他们通常像这样使用:

Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);

我不能轻易想到你想要打印出常量本身的任何情况。

现在即使你使用它,你仍然会通过字符串连接将int值转换为String值 - 这不知道你想要什么格式,因为你不是明确指定它。没有“2位数格式int”这样的东西...... int只是一个数字。

您应该查看DateFormatSimpleDateFormat - 这是使用标准Java类库格式化日期和时间的首选方法。 (我个人鼓励你研究Joda Time作为一个更好的日期/时间API,但这是另一回事。)

例如:

DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
// Prints the current time using 24-hour format
System.out.println(formatter.format(new Date());

答案 1 :(得分:3)

试试这个

Calendar cal = Calendar.getInstance();

System.out.println(
  cal.get(Calendar.HOUR)+" "+
  cal.get(Calendar.HOUR_OF_DAY)+" "+
  cal.get(Calendar.MINUTE)+" "+
  cal.get(Calendar.SECOND)+" "
  );

答案 2 :(得分:2)

您所做的是打印日历常数值。

使用Calendar cal = Calendar.getInstance();创建日历实例(这将创建日历实例,当前时间和日期具有默认时区和默认语言环境)

您可以使用HOUR_OF_DAY, HOURcal.get(Calendar.HOUR_OF_DAY)

打印cal.get(Calendar.HOUR)的值

答案 3 :(得分:0)

看看GregorianCalender(http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html)。这可能就是你要找的东西。

答案 4 :(得分:0)

Calendar.HOUR,Calendar.HOUR_OF_DAY,Calendar.MINUTE和Calendar.SECOND是用于访问Calendar对象中的字段的常量。您需要首先创建一个Calendar对象,然后使用这些常量使用get()方法访问其字段。

请尝试java.util.Calendar了解详情。

我被Jon Skeet打败了 - 他的答案非常完美,是一个很好的起点。

答案 5 :(得分:0)

TL;博士

#estimate of beta
a <- c(coefficients(summary(fitexp)))

print(coef <- (a * -1 * 1 / 1)

#estimate of HR

print(HR <- exp(coef))

java.time

现代方法使用 java.time 类来取代麻烦的旧( GregorianCalendar ) myCal // Cast from interface `Calendar` to concrete class `GregorianCalendar`. .toZonedDateTime() // Convert from troublesome old legacy class to modern java.time class. .getHour() // Extract the hour of the time-of-day portion. 类。

假设您的Calendar实际上是Calendar,则进行投射和转换。旧类现在有了新的方法来帮助转换为 java.time

GregorianCalendar是替换ZonedDateTime java.time 类。

GregorianCalendar

现在询问你想要的部分。

GregoriarCalendar gc = ( GregorianCalendar ) myCal ;
ZonedDateTime zdt = gc.toZonedDateTime() ;

提示:您可能需要提取int hour = zdt.getHour() ; int minute = zdt.getMinute() ; int second = zdt.getSecond() ; int nano = zdt.getNano() ; 对象,以表示没有日期且没有时区的时间。

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和&amp; SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要LocalTime类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore