public static void main(String[] args){ int year=2009; int month=7; int day=20; Week.showWeek(year,month,day);
}
public static void showWeek(int year,int month,int day){
Calendar c = Calendar.getInstance();
c.set(year, month-1, day); int m= c.get(Calendar.DAY_OF_WEEK); String s=""; switch(m) { case 1:s="日";break; case 2:s="一";break; case 3:s="二";break; case 4:s="三";break; case 5:s="四";break; case 6:s="五";break; case 7:s="六";break;
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); System.out.println((new SimpleDateFormat("yyyy年MM月dd日 EEE")).format(sf.parse("2009-08-20")));
public int getWeek(int dYear,int dMonth,int dDay){
int days=0;
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i<dMonth;i++){
days+=months[i];
}
days+=dDay+6;
return (days)%7;
}
解释一下:days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
以公元0年为基准,看过了多少年。
1.每一年按365天算。
2.做调整,看经过了多少闰年。按闰年的规律做相应的调整。dDay+6是因为0年1月1日是星期六。(这个可以不知道,但可以一个一个试出来,比如你假设是星期日,算出来的结果不对,你调整一下就对了)
我看了api,查不到合适的方法,
高手指点下
System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK)); 测试结果:3
代表星期二,一周从周日开始
public class ttt { public static void getWeek() throws Exception{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(format.parse("2008-08-08"));
int dayForWeek = 0;
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
System.out.print(dayForWeek);
}
public static void main(String[] args) throws Exception {
getWeek();
}
}输出结果是5,所以2008年8月8日应为星期五
所以8月8日应该是
Calendar c = new GregorianCalendar(2008, 9, 8);
System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK)); 测试结果:4国外算一周从周日开始,4是星期五。但还是谢谢楼上!
我还是错了 呵呵 真的不好意思
应该是
Calendar c = new GregorianCalendar(2008, 7, 8);
System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK)); 这次应该对了 哈哈 哈哈好马虎
测试结果6,星期日是0,星期五是6这次没错了 呵呵
结果也要减去1. Calendar calender =new GregorianCalendar(2009,month-1, 21);
System.out.println( calender.get(Calendar.DAY_OF_WEEK)-1);
public class Week{
public static void main(String[] args){
int year=2009;
int month=7;
int day=20;
Week.showWeek(year,month,day);
}
public static void showWeek(int year,int month,int day){
Calendar c = Calendar.getInstance();
c.set(year, month-1, day);
int m= c.get(Calendar.DAY_OF_WEEK);
String s="";
switch(m)
{
case 1:s="日";break;
case 2:s="一";break;
case 3:s="二";break;
case 4:s="三";break;
case 5:s="四";break;
case 6:s="五";break;
case 7:s="六";break;
}
System.out.println(year+"年"+month+"月"+day+"日是星期"+s);
}
这程序肯定对
System.out.println((new SimpleDateFormat("yyyy年MM月dd日 EEE")).format(sf.parse("2009-08-20")));
public static void main(String[] args){
String d="2009-8-24";
SimpleDateFormat sdf=new SimpleDateFormat("EEE");
try{
String s=sdf.format(java.sql.Date.valueOf(d));
System.out.println(s);
}catch(Exception e){
}
}输出星期一
now.set(2009, 7, 20); //月是按国外来算了,从0到11,0代表我们这边的12月,1代表2月,依次类推
System.out.println(now.get(Calendar.DAY_OF_WEEK)); //按国外来,我们这这的星期天代表数字1,星期一代表2,依次类推//如题得到结果是5,就是星期四!~
而且我测试了今天是星期几?代码如下
Calendar c = new GregorianCalendar(2009, 8, 25);
System.out.println("测试结果:" + c.get(Calendar.DAY_OF_WEEK));
结果运行为:6
问题:今天明明是星期二,为什么会这样了?难道机器也出问题?
这个问题很基本啊
Calendar类很常用的啊
Calendar c = Calendar.getInstance();
//2008-8-20
c.set(Calendar.YEAR, 2008);
c.set(Calendar.MONTH, 7);
c.set(Calendar.DAY_OF_MONTH, 20);//输出结果是:4(星期四),星期天是7这和Calendar所处Lacal有关,有些星期天是0
System.out.println(c.get(Calendar.DAY_OF_WEEK));
Calendar c = new GregorianCalendar(2009, 7, 25);
System.out.println("result:" + c.get(Calendar.DAY_OF_WEEK));
计算结果是3,正确
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
try {
c.setTime(df.parse("2008-08-20"));
c.setFirstDayOfWeek(Calendar.MONDAY); //设置周一为一周的第一天
System.out.println(c.get(Calendar.DAY_OF_WEEK));
} catch (ParseException e) {
e.printStackTrace();
}