从字符串开始的Java星期几

我有这个简单的代码:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = format.parse("2011-10-29"); calendar.setTime(date); Log.d("Debug","Day of the week = "+(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)); 

十月二十九日是星期六,为什么我会弄错?

这是一个如何发生这种情况的例子……

  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = format.parse("2011-10-29"); } catch (ParseException e) { e.printStackTrace(); } Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); calendar.setTime(date); System.out.println("Day of the week = " + (calendar.get(Calendar.DAY_OF_WEEK))); System.out.println("Saturday? " + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)); try { date = format.parse("2011-10-29"); } catch (ParseException e) { e.printStackTrace(); } calendar = Calendar.getInstance(TimeZone.getTimeZone("PST")); calendar.setTime(date); System.out.println("Day of the week = " + (calendar.get(Calendar.DAY_OF_WEEK))); System.out.println("Saturday? " + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)); 

哪个输出

 Day of the week = 7 Saturday? true Day of the week = 6 Saturday? false 

所以,是的,根据你所在的时区,它将会或不会是星期六。

使用以下代码获得:

  try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = format.parse("2011-10-29"); Calendar cal = GregorianCalendar.getInstance(); cal.setTime(date); System.out.println(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY); } catch(Exception e) { e.printStackTrace(); } 

也许是一个语言环境设置?