2016-07-04 43 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表示时使用这些标准格式。所以不需要定义格式化模式。

相关问题