Java中的日历类
我正在尝试使用Calendar类打印Java中的日历类,java,calendar,Java,Calendar,我正在尝试使用Calendar类打印HOUR\u OF_DAY,Minute and Second。 我在代码中使用了下面的命令 System.out.println( Calendar.HOUR+" "+ Calendar.HOUR_OF_DAY+" "+ Calendar.MINUTE+" "+ Calendar.SECOND+" " ); 它给出如下输出: 10 11 12 13 即使我运行这几个小时,它也会给出相同的输
HOUR\u OF_DAY,Minute and Second
。
我在代码中使用了下面的命令
System.out.println(
Calendar.HOUR+" "+
Calendar.HOUR_OF_DAY+" "+
Calendar.MINUTE+" "+
Calendar.SECOND+" "
);
它给出如下输出:
10 11 12 13
即使我运行这几个小时,它也会给出相同的输出
我以为它会以24小时格式打印当前时间,但我没有得到那个输出
所以我想知道这一天的小时,小时应该打印什么
请澄清。
Calendar.HOUR
,Calendar.HOUR\u OF\u DAY
等只是用于标识日期/时间方面的常量。它们通常是这样使用的:
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
我很难想象在任何情况下,你会想要打印出常数本身
现在,即使您正在使用它,您仍然会通过字符串连接将int
值转换为String
值,这不知道您想要什么格式,因为您没有明确指定它。没有所谓的“2位数格式的int
”。。。int
只是一个数字
您应该研究DateFormat
和SimpleDateFormat
——这是使用标准Java类库格式化日期和时间的首选方法。(我个人鼓励您也研究一种更好的日期/时间API,但这是另一回事。)
例如:
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
// Prints the current time using 24-hour format
System.out.println(formatter.format(new Date());
看看GregorianCalendar()。这可能就是您要查找的内容。您所做的是打印日历常数的值 使用
Calendar cal=Calendar.getInstance()创建日历实例代码>(这将创建当前时间和日期具有默认时区和默认区域设置的日历实例)
您可以使用cal.get(Calendar.HOUR\u of \u DAY)
,cal.get(Calendar.HOUR)
打印HOUR\u of \u DAY,HOUR的值
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)+" "
);
Calendar.HOUR、Calendar.HOUR\u OF_DAY、Calendar.MINUTE和Calendar.SECOND是用于访问Calendar对象中的字段的常量。首先需要创建一个日历对象,然后使用get()方法使用这些常量访问其字段
请尝试获取更多信息
我被乔恩·斯基特打败了——他的回答非常完美,是一个很好的起点。tl;博士
java.time
现代方法使用java.time类取代了麻烦的旧Calendar
类
假设您的日历
实际上是一个gregorianalendar
,则强制转换。旧类现在有了新的方法来帮助转换到java.time或从java.time转换到java.time
ZonedDateTime
是替换GregoriaCalendar
的java.time类
GregoriarCalendar gc = ( GregorianCalendar ) myCal ;
ZonedDateTime zdt = gc.toZonedDateTime() ;
现在询问你想要的部分
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
int second = zdt.getSecond() ;
int nano = zdt.getNano() ;
提示:您可能希望提取一个LocalTime
对象,以表示一天中没有日期和时区的时间
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要java.sql.*
类
从哪里获得java.time类
- 然后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(我们真的需要一个“被Jon Skeet打败”的徽章。你经常会看到其他人抱怨在一分钟内被同一个答案打败,然后想“忘掉它”,但当它发生在你身上时,你只是觉得……我不知道,我想是真正的业余爱好者吧?仅供参考:我想你在发布后的40秒内就回答了这个问题。这很激烈。@studro事实上,他在被问到之前40秒就回答了这个问题……只是花了很长时间才出现在这里……或者可能出于体育精神,他没有发布a在问题出现在网站上之前回答。@studro-haha+1,你赢了comments@sturdoJon的答案已经在SO数据库中,包括即将发布的答案,管理员们只是在等待问题发布,以便他们提供答案。;)看起来Jon Skeet是RajniKant on SO。在询问某个东西是如何工作的之前,始终检查文档。它再清楚不过了……我检查了一下,但没有理解TOODFYI,像、
java.text.SimpleDateFormat
这样麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。看见
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
int second = zdt.getSecond() ;
int nano = zdt.getNano() ;