//判断日期为星期几,0为星期六,依此类推 public static int dayOfWeek(Date date) { //首先定义一个calendar,必须使用getInstance()进行实例化 Calendar aCalendar=Calendar.getInstance(); //里面野可以直接插入date类型 aCalendar.setTime(date); //计算此日期是一周中的哪一天 int x=aCalendar.get(Calendar.DAY_OF_WEEK); return x; }
传Date类型可不是一个好的方法! public static void main(String args[]){ Calendar calendar = Calendar.getInstance(); calendar.set(2002,2,1); int x= calendar.get(Calendar.DAY_OF_WEEK); System.out.print( x ); } //out:6
/* * Created on 2005-7-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package com.redtroy;import java.util.GregorianCalendar;/** * @author redtroy * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CSDN1 { public static void main(String[] args) { GregorianCalendar gc=new GregorianCalendar();
//import java.text.SimpleDateFormat; //import java.util.Date; //import java.util.Calendar; public static void dayOfWeek() { Date today=new Date(); Calendar cal=Calendar.getInstance(); cal.setTime(today); int between=cal.get(Calendar.DAY_OF_WEEK)-1; System.out.println("today is "+between); int subMonday=0; if (between>=1&&between<=6) { subMonday=1-between; } else if (between==0) { subMonday=-6; } cal.add(Calendar.DAY_OF_MONTH,subMonday); System.out.println("monday is "+new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())); cal.add(Calendar.DAY_OF_MONTH,6); System.out.println("sunday is "+new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())); //System.out.println("sunday is "+Calendar.SUNDAY); }
难道不存在月份的交叉?
一、年分平、润年有算法 ;
二、2月分28,29日,主要是平,润年之分;
三、任定一个标准日,如20050710是星期日,可用(0--星期日,1-星期一,...)
四、将2005.07.10转为日,如 2005*10000+07*31+10(相当于二进制转换算法)
五、则任一天也转为这种值,再算差就可以了。
六、最后取 mod
希望你能明白。
public static int dayOfWeek(Date date)
{
//首先定义一个calendar,必须使用getInstance()进行实例化
Calendar aCalendar=Calendar.getInstance();
//里面野可以直接插入date类型
aCalendar.setTime(date);
//计算此日期是一周中的哪一天
int x=aCalendar.get(Calendar.DAY_OF_WEEK);
return x;
}
public static void main(String args[]){
Calendar calendar = Calendar.getInstance();
calendar.set(2002,2,1);
int x= calendar.get(Calendar.DAY_OF_WEEK);
System.out.print( x );
}
//out:6
* Created on 2005-7-11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.redtroy;import java.util.GregorianCalendar;/**
* @author redtroy
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class CSDN1 { public static void main(String[] args) {
GregorianCalendar gc=new GregorianCalendar();
gc.set(2005,7-1,10);
/*
* Sunday=1;
* Monday=2;
* ................
* Saturday=7;
*/
int nowdayofweek=gc.get(GregorianCalendar.DAY_OF_WEEK);
int thissunday;
if(nowdayofweek==1){
thissunday=0;
}else{
thissunday=-(nowdayofweek-7-1);
}
/*
* 周日
*
* gc.add(GregorianCalendar.DAY_OF_WEEK,thissunday);
* System.out.println(gc.getTime().toLocaleString());*/
/*
*周一
* gc.add(GregorianCalendar.DAY_OF_WEEK,thissunday-6);
* System.out.println(gc.getTime().toLocaleString());*/
}
}
//import java.util.Date;
//import java.util.Calendar;
public static void dayOfWeek()
{
Date today=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(today);
int between=cal.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("today is "+between);
int subMonday=0;
if (between>=1&&between<=6)
{
subMonday=1-between;
}
else if (between==0)
{
subMonday=-6;
}
cal.add(Calendar.DAY_OF_MONTH,subMonday);
System.out.println("monday is "+new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH,6);
System.out.println("sunday is "+new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())); //System.out.println("sunday is "+Calendar.SUNDAY);
}