我有一个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.
答案 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捆绑在一起的麻烦的旧日期时间类。
Boolean isFriday = LocalDate.parse( "2016-07-08" ).getDayOfWeek().equals( DayOfWeek.FRIDAY );
LocalDate
类表示没有时间且没有时区的仅限日期的值。
DayOfWeek
枚举有七个实例来表示和测试星期几。
您输入的字符串是ISO 8601格式。 java.time类在解析和生成String表示时默认使用这些标准格式。所以不需要定义格式化模式。