对了 一楼的方法有错误 首先 Calendar和TimeZone,Locale 要创建它们类的实例通常不是调用它们的构造方法,而是调用方法它们各自类中的 getInstance()以及getInstance(arguments) 其次应该get(Calendar.DAY_OF_WEEK_IN_MONTH); 当然也可以 get(8); 下面是是一些常量,具体查文档 int PM 1 int SATURDAY 7 int SHORT 1 int SUNDAY 1 int THURSDAY 5 int TUESDAY 3 int UNDECIMBER 12 int WEDNESDAY 4 int WEEK_OF_MONTH 4 int WEEK_OF_YEAR 3 int YEAR 1 int DAY_OF_WEEK_IN_MONTH 8 import java.util.Calendar; import java.util.Locale; import java.util.TimeZone;
public class TestCalendar{ public static void main(String []args){
构造一个带有默认时区和语言环境的 Calendar。先 new 一个 这个..然后set(int year, int month, int date)
设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。最后get(int field)
返回给定日历字段的值。字段(field)写上DAY_OF_WEEK就行了.
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
Date d=sdf.parse("2008年2月1日");
Calendar calendar=Calendar.getInstance();
calendar.setTime(d);
System.out.println(sdf.format(calendar.getTime()));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));星期日是1
星期一是2
星期六是7
要自己写 参考下蔡勒(Zeller)公式
蔡勒(Zeller)公式:是一个计算星期的公式。
随便给一个日期,就能用这个公式推算出是星期几。蔡勒公式如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪(前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。
要证明这个等式建议百度一下
其次应该get(Calendar.DAY_OF_WEEK_IN_MONTH); 当然也可以 get(8);
下面是是一些常量,具体查文档
int PM 1
int SATURDAY 7
int SHORT 1
int SUNDAY 1
int THURSDAY 5
int TUESDAY 3
int UNDECIMBER 12
int WEDNESDAY 4
int WEEK_OF_MONTH 4
int WEEK_OF_YEAR 3
int YEAR 1
int DAY_OF_WEEK_IN_MONTH 8
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
public class TestCalendar{
public static void main(String []args){
Locale locale_1=new Locale("CHINESE","CHINA");
Locale locale_2=Locale.getDefault(); TimeZone timezone_1=TimeZone.getDefault();
TimeZone timezone_2=TimeZone.getTimeZone("Asia/Shanghai");
Calendar calendar_1=Calendar.getInstance(timezone_2,locale_2);
Calendar calendar_2=Calendar.getInstance();
calendar_1.set(2008,10,30);
int weekDay=calendar_1.get(Calendar.DAY_OF_WEEK_IN_MONTH);
System.out.println("weekDay="+weekDay);
System.out.println();
for(String str:TimeZone.getAvailableIDs()){
System.out.println(str);
}
}
}