我在java中得到错误的小时和分钟

我在java中得到错误的小时和分钟,java,Java,我尝试用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; /** *

我尝试用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;
    }

但不知何故,现在我得到了一小时11分钟12分钟的时间,我错了什么?感谢您使用日历API不正确:

  • 此时,您正在访问Calendar类的
    static int
    字段,即
  • 要获取正确的时间/日期,请使用Calendar类的方法

日历.HOUR\u OF_DAY
日历.MINUTE
只是整数常量,您必须使用它们来获取日历实例的相应字段:

calendar.get(Calendar.HOUR_OF_DAY);
使用


Calendar.HOUR OF_DAY是常量

获取java中的当前小时数

private String getDateTime() {
    DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); // Choose your time format
    Date date = new Date();
    return dateFormat.format(date);
}

你得到的时间和分钟不正确。试试看

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

你的代码错了。你需要改变

int hour=Calendar.hour\u OF_DAY;
int minute=Calendar.minute

this.hour=calendar.get(calendar.hour/OF\u DAY);

this.minute=calendar.get(calendar.minute)

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

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

它给出了正确的答案

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);
}
 }
java.time 您使用的是麻烦的旧日期时间类java.time类。现在被java.time类取代。特别是在课堂上

需要时区来确定一天中的当前时间。一天中的日期和时间在全球任何特定时刻都因地区而异

ZoneId z = ZoneId.of( "America/Montreal" );
LocalTime lt = LocalTime.now( z );
int hour = lt.getHour();
int minute = lt.getMinute();

不知怎的,我每小时都有同样的时间!它应该是
calendar.get(calendar.HOUR\u OF\u DAY)
ZoneId z = ZoneId.of( "America/Montreal" );
LocalTime lt = LocalTime.now( z );
int hour = lt.getHour();
int minute = lt.getMinute();