急:一个日期、星期的算法问题!! 请问如何计算:某年某月某日后的第几个星期几是几号??比如:2005年10月28号后的第一个星期天是几号?请大侠帮帮小弟看看~~~感觉不尽啊~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 s=x-1+[(x-1)/4]-[(x-1)/100]+[(x-1)/400]+Cw=s%7其中x是公元的年数,C是从这一年的1月1日算起到这一天为止(包括这一天在内)的天数。方括号表示其中算式的整数部分,即在计算S的值时,三个方括号中只要算出商数的整数部分,把余数略去不计。求出S的值之后,除以7,余几就是星期几;余数为0就是星期日这个基本上准的 import java.util.Calendar;import java.util.Date;/*** www.urlshow.com*/public class 日期判断 { /** * * 功能: 获取时间 * @param 日期 起始日期 * @param 个数 星期个数 * @param 星期 星期几,1=星期日,2=星期1,3=星期2,4=星期3..... * @return 日期 */ public static Date get日期(Date 日期,int 个数,int 星期){ Calendar 日历=Calendar.getInstance(); 日历.setTime(日期); 日历.add(Calendar.DATE,个数*7+星期-日历.get(Calendar.DAY_OF_WEEK)); return 日历.getTime(); } /** * 功能: 主函数 * @param args */ public static void main(String[] args) { System.out.println(get日期(new Date(),1,2)); }} 计算当前日期之后的第一个星期一,输出31号Mon Oct 31 22:11:03 CST 2005 谢谢 xuender(徐强) 大侠。。我试试看行不行。。 import java.util.*;public class testDate { /** * @param args */ public static Date get(Date d,int i,int j){ Calendar ca= Calendar.getInstance(); ca.setTime(d); ca.add(Calendar.WEEK_OF_MONTH,i-1); ca.add(Calendar.DAY_OF_WEEK,j+1); return ca.getTime(); } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(get(new Date(),1,Calendar.MONDAY)); }} 我发的程序都是测试过的,直接复制就可以,但是注意,编码最好使用UTF-8 照你的方法:import java.util.Calendar;import java.util.Date;/*** www.urlshow.com*/public class TestDate{ public static Date getDate(Date date,int off,int weekOff) { Calendar c=Calendar.getInstance(); c.setTime(date); c.add(Calendar.DATE,off*7+weekOff-c.get(Calendar.DAY_OF_WEEK)); return c.getTime(); } /** * 功能: 主函数 * @param args */ public static void main(String[] args) { Date d = new Date(2005,10,8,8,10,10); System.out.println(getDate(d,1,2)); }}10月8号第1个星期一应该是:10月10号,但它输出却是:Mon Nov 13 08:10:10 CST 3905 刚才那个年份设的不对,但我把它改成这样,但输出也是不对的哦Date d = new Date(2005-1900,10,8,8,10,10);输出是:Mon Nov 14 08:10:10 CST 2005 发现如果月份再减一就正确了,但我不知道为什么要这样做???Date d = new Date(2005-1900,10-1,8,8,10,10);Mon Oct 10 08:10:10 CST 2005 java中月份是0--11(从0开始,0对应1月份),所以要减1 关于java正则匹配的问题 新手入门 Which methods guarantee that a thread will leave the running state 怎样制作java可执行文件? 流的传输 如何用“另存为”来存取图片?存取后在硬盘上双击需要能够显示出来。 JTree的选中问题,请进来看看啦 关于文本框的事件处理函数? 定义三维数组时,出现java.lang.OutOfMemoryError 问: 如何调整JVM的内存大小? JAVA新手求教图形界面 请问Vector和ArrayList有什么区别啊? 换行的问题..想问问.大家帮帮忙..谢谢
其中x是公元的年数,C是从这一年的1月1日算起到这一天为止(包括这一天在内)的天数。方括号表示其中算式的整数部分,即在计算S的值时,三个方括号中只要算出商数的整数部分,把余数略去不计。求出S的值之后,除以7,余几就是星期几;余数为0就是星期日
这个基本上准的
import java.util.Date;
/**
* www.urlshow.com
*/
public class 日期判断 {
/**
*
* 功能: 获取时间
* @param 日期 起始日期
* @param 个数 星期个数
* @param 星期 星期几,1=星期日,2=星期1,3=星期2,4=星期3.....
* @return 日期
*/
public static Date get日期(Date 日期,int 个数,int 星期){
Calendar 日历=Calendar.getInstance();
日历.setTime(日期);
日历.add(Calendar.DATE,个数*7+星期-日历.get(Calendar.DAY_OF_WEEK));
return 日历.getTime();
}
/**
* 功能: 主函数
* @param args
*/
public static void main(String[] args) {
System.out.println(get日期(new Date(),1,2));
}
}
输出31号
Mon Oct 31 22:11:03 CST 2005
我试试看行不行。。
public class testDate { /**
* @param args
*/
public static Date get(Date d,int i,int j){
Calendar ca= Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.WEEK_OF_MONTH,i-1);
ca.add(Calendar.DAY_OF_WEEK,j+1);
return ca.getTime();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(get(new Date(),1,Calendar.MONDAY));
}
}
import java.util.Calendar;
import java.util.Date;
/**
* www.urlshow.com
*/
public class TestDate
{
public static Date getDate(Date date,int off,int weekOff)
{
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE,off*7+weekOff-c.get(Calendar.DAY_OF_WEEK));
return c.getTime();
}
/**
* 功能: 主函数
* @param args
*/
public static void main(String[] args)
{
Date d = new Date(2005,10,8,8,10,10);
System.out.println(getDate(d,1,2));
}
}10月8号第1个星期一应该是:10月10号,但它输出却是:
Mon Nov 13 08:10:10 CST 3905
输出是:
Mon Nov 14 08:10:10 CST 2005