需求

  • 輸入日期字串(或java.util.Date),可以輸出對應是星期幾。
  • 輸出可以依照各程式的資料結構需求而改變,可以輸出字串、enum類別或其他自己定義的資料結構。
  • 例如:輸入「2014-03-17」,輸出將會是「星期一」或「1」。

思路

  • 善用java.text.DateFormatjava.util.Calendar兩個類別搭配服用即可達成。
  • 這邊因為輸出可以依照資料結構需求而變,所以使用最簡單的Integer來實作,資料結構轉換在client端實作。

程式碼

/**
 * 輸入日期,可以轉換成星期幾。
 * 
 * @param dateString日期字串
 * @return 星期幾
 * @throws ParseException 無法將字串轉換成java.util.Date類別
 */
public static String date2Day( String dateString ) throws ParseException
{
    SimpleDateFormat dateStringFormat = new SimpleDateFormat( "yyyy-MM-dd" );
    Date date = dateStringFormat.parse( dateString );

    SimpleDateFormat date2DayFormat = new SimpleDateFormat( "u" );
    return date2DayFormat.format( date );
}

實作說明

  • 第一個SimpleDateFormat是用來將字串轉換成java.util.Date物件,如果輸入是java.util.Date則可以不用做字串轉Date的轉換。
  • 第二個SimpleDateFormat就是用來將日期轉換成星期幾,在new SimpleDateFormat("u")u稱為日期時間的pattern,用來表示做日期格式化時分析時的樣式,而u pattern是用來表示一週的星期幾,並且以整數表示,1=星期一 ... 7=星期天。
  • 如果要直接轉換成「星期幾」而不是整數,則將pattern換成E即可。
  • 以上pattern的大小寫都要一樣!! 不一樣的大小寫在SimpleDateFormat會有不同的解讀,例如:大寫M表示月份,小寫m表示分鐘。

參閱更多

SimpleDateFormat

Comments

comments powered by Disqus