我有一个字符串格式的日期,如下所示"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。
大写Y
表示周-年。您可能指的是yyyy-MM-dd
(年份用小写的y
表示)。
javadoc列出所有有效的模式
应该是yyyy
,而不是YYYY
。
使用这个。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
您的问题在于用于解析年份的模式。请用这个代替用YYYY-MM-dd
创建SimpleDateFormat
new SimpleDateFormat("yyyy-MM-dd")
您应该使用"yyyy-MM-dd"
作为小写'y'的日期格式。
其他答案是正确的。但问答使用过时的类。
<标题> java.time h1> java。time框架取代了与早期Java版本捆绑在一起的麻烦的旧日期时间类。Boolean isFriday = LocalDate.parse( "2016-07-08" ).getDayOfWeek().equals( DayOfWeek.FRIDAY );
LocalDate
类表示一个只有日期的值,没有时间和时区。
DayOfWeek
枚举有7个实例来表示和测试星期。
您输入的字符串是ISO 8601格式。java。time类在解析和生成String表示时默认使用这些标准格式。所以不需要定义格式模式
标题>