java中计算两个日期之间天数的程序设计。

 1 //用java编写出一个以下方法计算两个日期之间天数的程序设计。
 2
 3 import java.util.regex.Matcher;
 4 import java.util.regex.Pattern;
 5
 6 public class Demo4 {
 7     public static void main(String[] args) {
 8         try {
 9             System.out.println(相差天数("2016-11-30", "2016-5-31"));
10         } catch (Exception e) {
11             e.printStackTrace();
12         }
13     }
14
15     private static Pattern p = Pattern.compile("(\\d{4})-(\\d{1,2})-(\\d{1,2})");
16
17     public static int 相差天数(String a, String b) throws Exception {
18         Matcher m = p.matcher(a);
19         if (!m.matches())
20             throw new Exception();
21         int y1 = Integer.parseInt(m.group(1));
22         int m1 = Integer.parseInt(m.group(2));
23         int d1 = Integer.parseInt(m.group(3));
24         m = p.matcher(b);
25         if (!m.matches())
26             throw new Exception();
27         int y2 = Integer.parseInt(m.group(1));
28         int m2 = Integer.parseInt(m.group(2));
29         int d2 = Integer.parseInt(m.group(3));
30         return 相差天数(y1, m1, d1, y2, m2, d2);
31     }
32
33     public static int 相差天数(int y1, int m1, int d1, int y2, int m2, int d2) {
34         return 总第几天(y1, m1, d1) - 总第几天(y2, m2, d2);
35     }
36
37     public static int 总第几天(int y, int m, int d) {
38         int a = (y - 1) * 365 + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400;
39         return a + 年第几天(y, m, d);
40     }
41
42     public static int 年第几天(int y, int m, int d) {
43         return 闰年(y) ? 润年月前天数[m] + d : 平年月前天数[m] + d;
44     }
45
46     public static boolean 闰年(int 年) {
47         return 年 % 400 == 0 || (年 % 4 == 0 && 年 % 100 != 0);
48     }
49
50     private static final int[] 平年月天数 = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
51
52     private static final int[] 平年月前天数 = new int[14], 润年月前天数 = new int[14];
53     static {
54         int n = 0;
55         for (int i = 1; i <= 12; i++) {
56             平年月前天数[i] = n;
57             润年月前天数[i] = i > 2 ? n + 1 : n;
58             n += 平年月天数[i];
59         }
60         平年月前天数[13] = n;
61         润年月前天数[13] = n + 1;
62     }
63 }
时间: 2024-08-11 03:23:38

java中计算两个日期之间天数的程序设计。的相关文章

C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:

如下: typedef struct date { int year; int month; int day; }; 提示: 1. 使用如下函数完成相应功能 int isleapyear(int y); //计算是否为闰年 int islegal(Date x); //计算日期是否合法 int calcday(Date x);//计算日期是当年的第几天,用于计算两个日期之间天数的差值 2. 用于一维数组表示一年每月含有的天数 int dayofmonth[12] = {31,28,31,30,3

java计算两个日期之间相差天数和相隔天数详解

大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,"相差"和"相隔"是有区别的,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为一个偶然的机会,一个项目运行几年却没有人发现,我在其中还不到一年,一开始写这些这代码的人根本没分清楚什么情况就写了,怪不得统计的数据总是有那么细微的差别,在于日期"相差"和"相隔"有某些特定的情况下是相等的

java计算两个日期之间相隔的天数

1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Calendar; 4 import java.util.Date; 5 6 7 public class date { 8 9 /** 10 * @param args 11 * @throws ParseException 12 */ 13 public static void main(String[] arg

Java 根据给定的日期,计算两个日期之间的时间差

计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差. 时间的兑换规则如下: 1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时 package com.qiyadeng.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDifferentExample { publ

25:计算两个日期之间的天数

25:计算两个日期之间的天数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定两个日期,计算相差的天数.比如2010-1-1和2010-1-3相差2天. 输入 共两行:第一行包含三个整数startYear,startMonth,startDay,分别是起始年.月.日.第二行包含三个整数endYear,endMonth,endDay,分别是结束年.月.日.相邻两个整数之间用单个空格隔开. 年份范围在1~3000.保证日期正确且结束日期不早于起始日期.

计算两个日期之间的工作日天数

最近遇到要求两个日期之间的工作日天数的问题,遂在网上找了下js的代码,参考了下别人的代码,发现写的都有些冗余,于是自己思考,进行了一下简单处理.主要是在循环处理上进行了精简. 对剩余天数的循环,也就可以考虑是对开始日期到剩余天数之间的处理,循环开始日期到剩余天数之间有多少个周六周日(最多只有一个周六或者一个周日),由于当前开始日期在(0-6)之间,也就是当前开始日期的星期对应的数字加上剩余天数(0-6)的循环一定在(0-11)之间,所以0,7代表周日,6代表周六. <html> <hea

C++计算两个日期之间的天数

计算两个日期之间的天数的思路: 首先,判断输入的年份是不是闰年.年份是否相同?月份是否相同?日是否相同? 日月年有三种可能的情况: 同年同月.日数相减就出来了. 同年不同月.计算日期小的月份到年初的天数,计算日期大的月份到年初的天数.再把两个日期向减 不同年.先计算中间相隔几年,计算较小的日期到年底有多少天,再计算较大的日期距年初有多少天,将三个数向加. 代码如下: 1 #include<iostream> 2 #include<CString> 3 #include<cma

计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较

/** * 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较 * @param higDate 减数 * @param lowDate 被减数 * @returns 差值天数 格式不正确返回null * @dada 2016-09-19 lhh添加备注 */ function DateDiff(higDate, lowDate) { //sDate1和sDate2是2006-12-18格式 var aDate, oDate1, oDate2, iDays; aDate =

计算两个日期之间的天数

//计算两个日期之间的天数 - (NSInteger)calcDaysFromBegin:(NSDate *)beginDate end:(NSDate *)endDate { NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; //取两个日期对象的时间间隔: NSTimeInterval time= [endD