比如选择2007/10月,如何计算2007年截止到10月31号的天数

bright0602 2007-11-14 10:25:31
一张月报表,要计算日均数,客户选择一个月份,比如选择2007/10(日期统一是这种格式),要计算2007年截止到10月31号的天数,请问高手如何计算。
我的基本思路是
1、选择月份后得到月末日期
2、计算月末日期和年初第一天的天数
不知道程序如何实现(Java或者Informix都可以)
如果有更简单的思路更好
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2007-11-14
  • 打赏
  • 举报
回复
速度最快还是查表
除了2月份,其他月份日期都是固定的
查表得到每个月月底与年初的日期差,如果日期为2月或2月以后,再考虑是否为闰年,如果为闰年,日期差+1

附代码:

private static final int[] offdays=//不考虑闰年情况下每月月底距年初的天数
{
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30,
31+28+31+30+31+30+31+31+30+31+30+31
};
public static final int getOffDays(int year,int month)
{
int off=offdays[month];//查表计算日起差
//如果是2月或2月后,并且是闰年的话,日期差+1
if(month>=java.util.Calendar.FEBRUARY && new java.util.GregorianCalendar().isLeapYear(year))
off++;
return off;
}
olivesoup 2007-11-14
  • 打赏
  • 举报
回复
随便写了一个


public static void main(String[] args) {
String time = "2007/10";
String[] times = time.split("/");
Calendar cal = new GregorianCalendar();
cal.setLenient(false);
cal.set(Calendar.YEAR, Integer.parseInt(times[0]));
cal.set(Calendar.MONTH, Integer.parseInt(times[1]) - 1);
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
int result = cal.get(Calendar.DAY_OF_YEAR);
System.out.println(result);

}
Kreocn 2007-11-14
  • 打赏
  • 举报
回复
恩...我也觉得先把所有的都固定...效率最高...顶楼上...

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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