-2

我尝试在java中获取当前时间和小时:

import java.util.Calendar;
import  java.util.Date;
public class Clock2
{
    // instance variables - replace the example below with your own
    private int minute;
    private int hour;
    private String daytime;

    /**
     * Constructor for objects of class Clock2
     */
    public Clock2()
    {   
        Date date = new Date(); 
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        this.hour = Calendar.HOUR_OF_DAY;
        this.minute = Calendar.MINUTE;
    }

但不知何故,现在13.33我每11分钟得到一个小时12,我做错了什么?谢谢

4

9 回答 9

7

Calendar.HOUR_OF_DAY并且Calendar.MINUTE只是整数常量,您必须使用它来获取日历实例的相应字段

calendar.get(Calendar.HOUR_OF_DAY);
于 2013-11-12T12:37:09.900 回答
3

利用

 calendar.get(Calendar.MINUTE)

Calendar.HOUR_OF_DAY 是常量

于 2013-11-12T12:37:48.950 回答
2

你得到错误的小时和分钟。尝试。

    this.hour = calendar.get(Calendar.HOUR_OF_DAY);
    this.minute = calendar.get(Calendar.MINUTE);
于 2013-11-12T12:38:47.620 回答
1

它给出了正确的答案

import java.util.Calendar;
 import java.util.Date;

 public class Clock2 {

public static void main(String[] args) {
    Clock clock = new Clock();
}

}

class Clock {
/**
 * Constructor for objects of class Clock2
 */
private final int minute;
private final int hour;

public Clock() {
    Date date = new Date();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    hour = calendar.get(Calendar.HOUR_OF_DAY);
    minute = calendar.get(Calendar.MINUTE);
    System.out.println(hour + " " + minute);
}
 }
于 2013-11-12T12:47:04.503 回答
1

你的代码是错误的。你需要改变

int hour = Calendar.HOUR_OF_DAY; int minute = Calendar.MINUTE;

经过

this.hour = calendar.get(Calendar.HOUR_OF_DAY); this.minute = calendar.get(Calendar.MINUTE);

于 2013-11-12T12:39:07.327 回答
1

使用不正确的日历 API:

  • 目前,您正在访问static intCalendar 类的字段,即Calendar.HOUR.
  • 要获取正确的时间/日期,请使用get(int field)Calendar 类的方法。
于 2013-11-12T12:37:03.067 回答
0

尝试使用 Joda Time 而不是标准的 java.util.Date 类。Joda Time 库有更好的 API 来处理日期。

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
于 2013-11-12T12:41:00.343 回答
0

在java中获取当前时间

private String getDateTime() {
    DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); // Choose your time format
    Date date = new Date();
    return dateFormat.format(date);
}
于 2013-11-12T12:38:15.467 回答
0

java.time

您正在使用麻烦的旧日期时间类 java.time 类。现在被 java.time 类所取代。特别是LocalTime班级。

需要时区来确定一天中的当前时间。对于任何给定时刻,日期和时间在全球范围内因区域而异。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalTime lt = LocalTime.now( z );
int hour = lt.getHour();
int minute = lt.getMinute();
于 2016-09-17T01:35:21.560 回答