2016-07-04 45 views
1

我有一個字符串格式的日期,採用以下方式「2016-07-08」(2016年7月8日)。我需要檢查這是否是星期五,原因是日期會改變,我會一直需要檢查提供的日期是否是星期五。我使用下面的代碼(假設的startDate是保存我的日期的字符串):我想輸出存儲在卡的價值我需要將字符串格式的日期轉換爲實際日期以檢查它是星期五

DateFormat formatter = new SimpleDateFormat("YYYY-MM-dd"); 
java.util.Date date = formatter.parse(startDate); 
cal.setTime(date); 
if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY){ 
    System.out.println("IT'S FRIDAY!!!!");  
} 

,並且它返回週一1月4日00:00:00 CET 2016 。

回答

3

首都Y爲週年。你的意思可能是yyyy-MM-dd(年份爲小寫y)。

javadoc列出了所有有效的模式。

+0

它的工作,謝謝:) –

1

你的問題在於用於解析年份的模式。相反,與YYYY-MM-dd創建的SimpleDateFormat的請用這個代替

new SimpleDateFormat("yyyy-MM-dd") 
+0

它的工作,謝謝:) –

2

應該yyyy,不YYYY

使用此。

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
0

您應該使用"yyyy-MM-dd"作爲小寫'y'的日期格式。

0

其他回答都是正確的。但問題和答案使用過時的類。

java.time

的java.time框架取代了與Java的早期版本中捆綁了麻煩的舊日期時間類。

Boolean isFriday = LocalDate.parse("2016-07-08").getDayOfWeek().equals(DayOfWeek.FRIDAY); 

LocalDate類代表沒有時間和沒有時區的僅有日期的值。

DayOfWeek枚舉有七個實例來表示和測試星期幾。

您輸入的字符串是ISO 8601格式。默認情況下,java.time類在解析和生成String表示時使用這些標準格式。所以不需要定義格式化模式。

相關問題