如果打算使用astronomy Half-Month(不要與astronomy fortnight混淆),那麼Answer by jarrad是正確的。但是現在我們有更多的現代類,即java.time類。
LocalDate
的LocalDate
類表示沒有時間一天和不同時區的日期,唯一的價值。
時區對確定日期至關重要。對於任何特定的時刻,日期因地區而異。例如,巴黎午夜過後的幾分鐘,法國是一個新的一天,而在魁北克蒙特利爾仍然是「昨天」。
ZoneId z = ZoneId.of("America/Montreal");
LocalDate ld = LocalDate.now(z);
獲取月份編號,1-12月爲1月至12月。
int monthNumber = ld.getMonthValue(); // 1-12.
將該月的數字乘以二,因爲每月有兩個半月。如果在本月初,減一(例如,6變爲5)。
int adjustment = (ld.getDayOfMonth() < 16) ? 1 : 0 ; // If first half of month, back off the half-month-number by 1.
int halfMonthNumber = ((monthNumber * 2) - adjustment); // 1-24.
的天文半月標記每一個英文字母,A
- Y
而省略I
。所以我們用半個月的數字從24個字母的子集字母表中提取一封信。
int index = (halfMonthNumber - 1); // Subtract one for zero-based counting.
String alphaCode = "ABCDEFGHJKLMNOPQRSTUVWXY".substring(index , index + 1);
我還沒有運行該代碼,只是鍵入我的頭頂部。使用風險自負,如有需要請修復。
關於java.time
的java.time框架是建立在Java 8和更高版本。這些課程取代了麻煩的舊日期時間課程,如java.util.Date
,.Calendar
,& java.text.SimpleDateFormat
。
的Joda-Time項目,現在在maintenance mode,建議遷移java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。
大部分的java.time功能後移植到Java 6 和ThreeTenABP還適於Android(見How to use…)。
ThreeTen-Extra項目擴展java.time與其他類。這個項目是未來可能增加java.time的一個試驗場。你可以在這裏找到一些有用的類,如Interval
,YearWeek
,YearQuarter
,等等。
你期望什麼結果?什麼是「半周」? – 2012-04-27 12:47:56
不應該你乘以2而不是lol – Snicolas 2012-04-27 12:48:08
我想要6作爲結果,但我有5(半周是14天)。 – CeccoCQ 2012-04-27 12:49:42