代码:
Log.e("year = ",eventiCompleti.get(i).year);
Log.e("month = ",eventiCompleti.get(i).month);
Log.e("day = ",eventiCompleti.get(i).day);
Log.e("hour = ",eventiCompleti.get(i).hour);
TimeZone MyTimezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(MyTimezone);
calendar.set(Integer.parseInt(eventiCompleti.get(i).year),Integer.parseInt( eventiCompleti.get(i).month),Integer.parseInt( eventiCompleti.get(i).day),0,0,0);
String month_name=calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());//Locale.US);
String day_name=calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
Log.e("day of the week = ",day_name);
输出:
06-30 21:33:55.828: E/year =(11254): 2013
06-30 21:33:55.828: E/month =(11254): 08
06-30 21:33:55.828: E/day =(11254): 07
06-30 21:33:55.828: E/hour =(11254): 18:00
06-30 21:33:55.828: E/day of the week =(11254): Saturday
但是2013年8月7号并不是星期六。
不知道哪出错了?
谢谢。
这里的错误可能是月份的问题,Java 中的月份是从 0 开始的,因此对于 8 月,实际上是 7。
另外,我注意到你在这里使用了 Calendar 和 GregorianCalendar,但是在设置日期时使用了字符串(例如 eventiCompleti.get(i).year)。这可能会导致类型转换错误。
您可以尝试使用下面的代码来纠正错误:
TimeZone MyTimezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(MyTimezone);
// 修改月份为从 1 开始
calendar.set(
Integer.parseInt(eventiCompleti.get(i).year),
Integer.parseInt(eventiCompleti.get(i).month) - 1,
Integer.parseInt(eventiCompleti.get(i).day),
0,
0,
0
);
String month_name = calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
String day_name = calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
Log.e("day of the week = ", day_name);
这应该会使输出为正确的星期几。