![](/img/trans.png)
[英]Display calendar month based off of the year and day the year starts (Java)
[英]Convert month and day number to day of year using CALENDAR
我有兩個數字。 首先是月份號。 第二個是天數。
我也知道年份。
如何將月份和日期這兩個數字取為單一數字DAY_OF_YEAR?
我正在使用Java 1.7和Calendar函數。
int year = 2019;
int monthNumber = 9;
int dayNumber = 28;
LocalDate date = LocalDate.of(year, monthNumber, dayNumber);
int dayOfYear = date.getDayOfYear();
System.out.println("Day of year is " + dayOfYear);
該代碼段的輸出為:
一年中的一天是271
使用ThreeTen Backport 1.3.6在Java 1.7.0_79上進行了測試,並導入了org.threeten.bp.LocalDate
。
在此,當前接受的用於創建和設置Calendar
對象的答案的四行被一行替換。 使用Calendar
代碼通常過於冗長,這是我們不希望的。 同樣,盡管Calendar
對象的名稱不僅僅是日歷日期,但它還帶有一天中的某個時間,一個時區以及更多內容,因此我認為它不適合手頭的工作。 如果默認語言環境為Thai,則使用Calendar
的代碼將給出不同的結果,這將使大多數人感到驚訝。 Calendar
類的設計不佳,並且已經過時了。
相反,我使用的是Java.time(現代Java日期和時間API)的LocalDate
。
我正在使用Java 1.7…
java.time在Java 7上運行良好。它至少需要Java 6 。
org.threeten.bp
導入日期和時間類。 java.time
。 java.time
。 java.time
到Java 6和7的java.time
移植(JSR-310的ThreeTen)。 僅使用日歷並假設月份數為零索引,其中0
表示一月,這是2019年5月13日的示例:
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.ENGLISH);
c.set(Calendar.YEAR, 2019);
c.set(Calendar.MONTH, 4);
c.set(Calendar.DAY_OF_MONTH, 13);
System.out.println(c.get(Calendar.DAY_OF_YEAR));
編輯:正如Ole VV的答案指出的那樣,如果您調用“ Calendar.getInstance()”,則將獲得帶有系統時區的Calendar對象,因此我以明確指定要使用的時區和語言環境的方式對其進行了更改。 如果您想獲取某個日期的星期數,而該日期在世界不同地區的規則不同,則后者非常重要。
您可以將零件連接成String
,並使用SimpleDateFormatter
例如:
int year = 2019;
int month = 1;
int day = 23;
String string = "" + year + "-" + month + "-" + day;
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(string);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
該示例適用於2019年1月23日。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.