我想检索当前系统小时,当用户点击Button1时,var“ct”将是当前系统小时+1。
然后,我希望当var ct =当前系统小时时,程序将文本字段文本设置为“完成”,但我似乎无法使用时间。
我在主要班级:
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
int ct=0;
When user click Button1
name = jTextField1.getText();
ct = minute + 1;
jLabel3.setText("Ends at "+ct);
现在我如何永久运行一个方法来检查ct =当前小时?
答案 0 :(得分:2)
Java的日期/时间处理非常好被认为非常糟糕。如果你有自由,你可以使用Joda-Time库。
DateTime now = new DateTime();
int hour = now.getHourOfDay();
对我而言,它比Java的日期/时间提供的更具可读性。此外,还支持实际持续时间,仅限日期,仅限时间等...
答案 1 :(得分:1)
检查是否ct==current-hour
public static boolean compareToHour(int arg)
{
Calendar temp = Calendar.getInstance();
int tempHour = temp.get(Calendar.HOUR_OF_DAY);
return arg==tempHour;
}
要比较两者,请在任何地方运行以下方法:compareToHour(ct)
答案 2 :(得分:0)
ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )
.getHour()
现代的方法是使用java.time类。
以UTC格式获取当前时刻。
Instant instant = Instant.now();
调整到所需/预期的时区。您可以检查JVM的当前默认时区。但是要知道,在运行期间,JVM中任何应用程序的任何线程中的任何代码都可以随时更改默认值。因此,如果关键,请指定所需/预期的时区,询问用户是否需要。
应用ZoneId
获取ZonedDateTime
个对象。
ZoneId z = ZoneId.of( "America/Montreal" ); // Or ZoneId.systemDefault()
ZonedDateTime zdt = instant.atZone( z );
你可以查询一小时。
int hour = zdt.getHour();
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。