2010-04-24 94 views
3

我正在使用公曆日曆來爲使用公曆日曆的設置功能的應用程序設置特定的日期和時間。當我使用getTime()方法時,它給了我正確的輸出,但是當我嘗試訪問Hour_Of_Day和分鐘時,它給出了錯誤的數字。在java中提供公曆一小時日曆

Calendar time = new GregorianCalendar(); 
    time.set(2010, Calendar.JANUARY, 1, 7, 20,0);  
    hour = time.HOUR_OF_DAY; 
    minute = time.MINUTE; 

時針給出的11的輸出和分給出的12
上如何解決這一問題的任何建議的值? 謝謝

+0

這是一個很好的。總是會返回11嗎? : - )以下是更多信息:http://java.sun.com/javase/6/docs/api/java/util/Calendar.html – OscarRyz 2010-04-24 02:46:31

+0

僅供參考,麻煩的舊日期時間類,例如['java.util。日期'](https://docs.oracle.com/javase/9​​/docs/api/java/util/Date.html),['java.util.Calendar'](https://docs.oracle.com /javase/9​​/docs/api/java/util/Calendar.html)和'java.text.SimpleDateFormat'現在是[legacy](https://en.wikipedia.org/wiki/Legacy_system),由[Java時間](https://docs.oracle.com/javase/9​​/docs/api/java/time/package-summary.html)內置於Java 8和Java 9的類。請參見[Oracle指南]( https://docs.oracle.com/javase/tutorial/datetime/TOC.html)。 – 2018-02-01 06:24:01

回答

8

你的代碼只是分配常量的小時/分鐘。你需要調用Calendar.get(INT):

hour = time.get(Calendar.HOUR_OF_DAY); 
minute = time.get(Calendar.MINUTE); 
+0

+1打我吧 – OscarRyz 2010-04-24 02:48:56

+0

完美的作品!謝謝 – 2010-04-24 09:27:09

0

TL;博士

myGregCal 
    .toZonedDateTime() // Convert from legacy class GregorianCalendar to modern ZonedDateTime. 
    .getHour()   // Get hour-of-day, 0-23. 

java.time

與替換那些麻煩的老傳統現代java.time類容易得多日期時間課程。

ZonedDateTime類表示具有納秒分辨率的特定時區中時間線上的時刻。

使用添加到舊類中的新方法從GregorianCalendar轉換而來。

ZonedDateTime zdt = myGregCal.toZonedDateTime() ; 

或者從GregorianCalendar類別開始新鮮。

ZoneId z = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.of(2010 , Month.JANUARY , 1 , 7 , 20 , 0 , 0 , z); 

如果你想只是時間的日部分工作,提取LocalTime

LocalTime localTime = zdt.toLocalTime() ; 

如果你真的想要小時和分鐘的整數,你可以詢問這些。

int hour = zdt.getHour(); 
int minute = zdt.getMinute(); 

關於java.time

java.time框架是建立在Java 8和更高版本。這些類取代了日期時間類legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time項目現在位於maintenance mode,建議遷移到java.time類。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310

從何處獲取java.time類?

ThreeTen-Extra項目與其他類擴展java.time。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval,YearWeek,YearQuartermore