我需要将String格式的日期转换为实际日期,以便检查它是否是星期五

时间:2016-07-04 12:49:53

标签: java date datetime

我有一个String格式的日期,按照以下方式" 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!!!!");    
}

我尝试输出存储在cal中的值,并返回Mon Jan 04 00:00:00 CET 2016.

5 个答案:

答案 0 :(得分:3)

资本Y是针对一周的。您可能意味着yyyy-MM-dd(年份为小y}。

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

答案 1 :(得分:2)

应该是yyyy,而不是YYYY

使用它。

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

答案 2 :(得分:1)

您的问题在于用于解析多年的模式。不要使用YYYY-MM-dd创建SimpleDateFormat,而是使用此代替

new SimpleDateFormat("yyyy-MM-dd")

答案 3 :(得分:0)

您应该使用"yyyy-MM-dd"作为日期格式,小写'y'。

答案 4 :(得分:0)

其他答案都是正确的。但问题和答案使用过时的类。

java.time

java.time框架取代了与最早版本的Java捆绑在一起的麻烦的旧日期时间类。

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

LocalDate类表示没有时间且没有时区的仅限日期的值。

DayOfWeek枚举有七个实例来表示和测试星期几。

您输入的字符串是ISO 8601格式。 java.time类在解析和生成String表示时默认使用这些标准格式。所以不需要定义格式化模式。