Время в календаре Java, неправильная минута - PullRequest
5 голосов
/ 01 января 2009

Кто-нибудь знает, почему метод MINUTE в java.util.Caldendar возвращает неверную минуту?

import java.util.Calendar;

public class Clock
{
    // Instance fields
    private Calendar time;

    /**
     * Constructor. Starts the clock at the current operating system time
     */
    public Clock()
    {
       System.out.println(this.time.HOUR_OF_DAY+":"+this.time.MINUTE);
    }
}

Ответы [ 4 ]

26 голосов
/ 01 января 2009

Calendar.MINUTE - не фактическая минута, а постоянное значение индекса, которое передается в "get ()" для получения значения. Например:

System.out.println(this.time.get(Calendar.HOUR_OF_DAY) + ":" + this.time.get(Calendar.MINUTE));
9 голосов
/ 01 января 2009

HOUR_OF_DAY и MINUTE являются открытыми статическими полями, которые должны быть переданы в Calendar#get(int). Как правило, вы хотите использовать Calendar.getInstance().get(Calendar.MINUTE) для текущей минуты. В вашем примере, однако, вы хотите time.get(Calendar.MINUTE).

1 голос
/ 16 сентября 2009

импорт java.util.Calendar;

часы общественного класса { // Поля экземпляра личное календарное время;

/**
 * Constructor. Starts the clock at the current operating system time
 */
public Clock()
{
   time = Calendar.getInstance(); 
   System.out.println(this.time.get(Calendar.HOUR_OF_DAY) +
                       ":" + this.time.get(Calendar.MINUTE));
}

}

---------------- 0 --------------- ;)

0 голосов
/ 27 декабря 2016

ТЛ; др

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )
             .getMinute()

34
(если текущий момент был 2016-01-23T12: 34: 56.789-05: 00 [Америка / Монреаль])

Подробнее

Остальные ответы верны.

java.time

Современный способ выполнить эту работу - использовать классы java.time, которые вытесняют проблемные старые унаследованные классы даты и времени.

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( z );  // zdt.toString(): 2016-01-23T12:34:56.789-05:00[America/Montreal]
int minute = zdt.getMinute();  // 34

О java.time

Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

Проект Joda-Time , в настоящее время находящийся в режиме обслуживания , рекомендует перейти на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Где получить классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter и more .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...