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. }

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

  1. JAVA中计算两个日期时间的差值竟然也有这么多门道

    上半年春招的时候,作为面试官,对于面试表现的不错的同学会要求其写一小段代码看看.题目很简单: 给定一个日期,然后计算下距离今天相差的天数. 本以为这么个问题就是用来活跃面试氛围的,但是结果却让人大跌眼 ...

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

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  3. java计算两个日期之间相隔的月份(向下取整)

    最近需求里面有个需要计算两个日期之间相隔的月份,写起来还挺繁琐,需要将各种情况都要考虑到,写了一个作为以后自己的工具吧. //获取哪一天 public static int getDay(Date d ...

  4. JS计算两个日期之间的天数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd和YYYY-mm-dd HH:mm:ss

    /** * 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较 * @param higDate 减数 * @param lowDate 被减数 * @returns 差值天数 ...

  6. js中计算两个日期之差

    js中计算两个日期之差            var aBgnDate, aEndDate;            var oBgnDate, oEndDate;            var nYl ...

  7. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  8. mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

    mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日 ...

  9. 用VBA计算两个日期之间的工作日(去掉周末两天)

    最近公司HR和Finance想算员工的工作天数,想让我帮忙写些VBA,自己从网上找了下代码,自己再改改,以下来自网络. 计算两个日期之间的工作日,用VBA,因量大,最好用数组做 Sub kk() Di ...

随机推荐

  1. POJ3581 Sequence(后缀数组)

    题意:给一个串,串的第一个字符比后面的都大,要把它分成三段,然后反转每一段,求能得到的字典序最小的串是什么. 首先,第一段是可以确定的:把原串反转,因为第一个字符是最大的,它是唯一的,不存在反转串的后 ...

  2. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  3. 利用CSS3 中steps()制用动画

    .monster { width: 190px; height: 240px; margin: 2% auto; background: url('http://treehouse-code-samp ...

  4. 我的第一个 Mono for Android 应用

    创建 Mono for Android 应用 打开 MonoDevelop , 选择新建解决方案, 左边的分类选择 "Mono for Android" , 右边选择 " ...

  5. TYVJ P1020 导弹拦截 Label:水

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  6. c#操作excel后关闭excel.exe的方法

    关闭进程 C#和Asp.net下excel进程一被打开,有时就无法关闭,   尤其是website.对关闭该进程有过GC.release等方法,但这些方法并不是在所有情况下均适用.  于是提出了kil ...

  7. CSS HTML链接去掉小手与增添小手

    style="cursor: hand" crosshair:精确定位“十”字形: text:文本“I”形: wait:等待,“沙漏”形: default:默认指针: help:帮 ...

  8. SVN 中trunk、branches、tags

    SVN 中trunk.branches.tags   我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...

  9. Mac 配置环境变量

    系统:mac OS 10.10.3  or later 1.如果不能使用一些常用终端命令,如ls,open.可能是环境变量配置不当导致的.尤其是手动修改 输入以下命令: export PATH=/us ...

  10. Asp.Net:Repeater 详情 备用

    页面 repeator就想for循环一样,没有编辑模板,有删除delete和详情detail模板 <%@ Page Language="C#" AutoEventWireup ...