自然年怎么计算?

u010630819 2013-05-09 01:28:03
比如 2012-02-01 到 2013-01-01
天 周 月 季度 年
2011-12-31 334 48 11 4 1
2012-01-01 335 48 12 4 2

...全文
940 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个代码可以计算两个日期之间的天数(无论是什么年都可以) public class TianShu{ /**主程序的入口,有多个调用语句用来完成各项功能 程序无论main中还是方法中,变量的代表含义都是 一致的:ksn表示“开始的年份”;ksy表示“开始 的月份”;ksr表示“开始的日份(即那一天)”; zzn表示“终止时的年份”;zzy表示“终止的月份”; zzr表示“终止的日份”。*/ public static void main(String[] args) { int ksn=1998; int ksy=4; int ksr=5; int zzn=2001; int zzy=2; int zzr=16; int ts=0; //引用方法判断日期是否合法 boolean o = heGeRiQi(ksn,ksy,ksr,zzn,zzy,zzr); boolean p = riShiFouHeGe(ksn,ksy,ksr); boolean q = riShiFouHeGe(zzn,zzy,zzr); if(o==false) { int n = 1; System.exit(n); //中止程序不再运行下面的语句 } else if(p==false||q==false) { System.out.println("输入的日份非法!"); int n = 1; System.exit(n); //中止程序不再运行下面的语句 } if(ksn==zzn){ //同一年时 if(ksy==zzy) //同一个月份的天数计算方法调用 ts = tongNianYue(ksr,zzr); else if(((ksn % 4 == 0) && (ksn % 100 != 0)) || (ksn % 400 == 0)) //判断为闰年 ts = tongRunNianBuYue(ksy,ksr,zzy,zzr); //闰年天数计算方法调用 else ts = tongPinNianBuYue(ksy,ksr,zzy,zzr); //平年天数计算方法调用 }else { //不同年的天数计算方法调用 ts = buTongNian(ksn,ksy,ksr,zzn,zzy,zzr); } System.out.print(ts); } //同年同月的计算方法tongNianYue public static int tongNianYue(int ksr,int zzr) { int ts = zzr-ksr; return ts ; } //平年的同年不同月的计算方法 public static int tongPinNianBuYue(int ksy,int ksr,int zzy,int zzr) { int[] yue=new int[] {31,28,31,30,31,30,31,31,30,31,30,31}; int ts = yue[ksy-1] - ksr + zzr; int i = ksy + 1; while(i<zzy) { ts+=yue[i-1]; i++; } return ts ; } //润年的同年不同月的计算方法 public static int tongRunNianBuYue(int ksy,int ksr,int zzy,int zzr) { int[] yue=new int[] {31,29,31,30,31,30,31,31,30,31,30,31}; int ts = yue[ksy-1] - ksr + zzr; for(int i=ksy+1;i<zzy;i++) ts+=yue[i-1]; return ts ; } /*heGeRiQi方法主要用来判断年月是否合格,即都为正数 且开始年不在终止年之后;同一年的则开始月不在终止 月之后;同年月的开始日不在终止日之后。 */ public static boolean heGeRiQi(int kn,int ky,int kr,int zn,int zy,int zr) { boolean tem=true; if((kn<=0)||(ky<=0)||(kr<=0)||(zn<=0)||(zy<=0)||(zr<=0)) { System.out.println("输入的日期非法!"); tem = false; } else if(kn>zn) { System.out.println("输入的年份非法!"); tem = false; } else if((kn==zn)&(ky>zy)|(zy>12)) { System.out.println("输入的月份非法!"); tem = false; } else if(kn==zn&ky==zy&kr>zr) { System.out.println("输入的日份非法!"); tem = false; } return tem; } //判断日份是否合格,即日份不大于所在月份的最大日数 public static boolean riShiFouHeGe(int nian,int yue,int ri) { boolean tem = true; switch(yue) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(ri>31) tem = false; break; case 4: case 6: case 9: case 11: if(ri>30) tem = false; break; case 2: if(((nian % 4 == 0) && (nian % 100 != 0)) || (nian % 400 == 0)) { if(ri>29) tem = false; }else { if(ri>28) tem = false; } break; default : } return tem; } //不同年天数计算方法buTongNian public static int buTongNian(int ksn,int ksy,int ksr,int zzn,int zzy,int zzr) { int ts0=0; //开始年与终止年之间的年份的天数和,不包括开始年与终止年 int ts1=0; //开始年所在的那一年中的天数 int ts2=0; //终止年所在的这一年中的天数 int zjs=0; //计算开始年所在的那一年的天数 if(ksy==12) ts1 = tongNianYue(ksr,31); else { if(((ksn % 4 == 0) && (ksn % 100 != 0)) || (ksn % 400 == 0)) ts1 = tongRunNianBuYue(ksy,ksr,12,31); else ts1 = tongPinNianBuYue(ksy,ksr,12,31); } //计算终止年所在的那一年的天数 if(zzy==1) ts2 = tongNianYue(1,zzr); else { if(((zzn % 4 == 0) && (zzn % 100 != 0)) || (zzn % 400 == 0)) ts2 = tongRunNianBuYue(1,1,zzy,zzr); else ts2 = tongPinNianBuYue(1,1,zzy,zzr); } //加1是因为把终止年的1月1日当作起始日期计算,即这一天不在算作一天, //而实际上1月1日还是算一天,故要加1补回来 ts2 = ts2 + 1; //计算中间年份的天数 int i = ksn +1; while(i<zzn) { if(((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) zjs += 366; else zjs +=365; i++; ts0 = zjs; } //计算总天数 int ts = ts0 + ts1 + ts2; return ts; } }
shine333 2013-05-09
  • 打赏
  • 举报
回复
请给出周的定义,即每周的第一天是什么?
跳蚤图 2013-05-09
  • 打赏
  • 举报
回复
没看懂问题。。。。。
u010630819 2013-05-09
  • 打赏
  • 举报
回复
人呢 人呢 这么冷清
u010630819 2013-05-09
  • 打赏
  • 举报
回复
急,速结贴

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧