欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java计算两个日期相差多少天,java计算日期,/* * 从键盘输入一

来源: javaer 分享于  点击 31386 次 点评:183

Java计算两个日期相差多少天,java计算日期,/* * 从键盘输入一


/*  * 从键盘输入一个日期,格式为yyyy-M-d     要求计算该日期与1949年10月1日距离多少天     例如:     用户输入了:1949-10-2     程序输出:1     用户输入了:1949-11-1     程序输出:31 */  import java.util.Arrays;  import java.util.Scanner;  public class Demo09 {      static int[][] days = { // 定义平年days[0]和闰年days[1]      {0,31,28,31,30,31,30,31,31,30,31,30,31},      {0,31,29,31,30,31,30,31,31,30,31,30,31}};      // 字符串转换 整数      public static int[] conversion(String s) {          String[] ss = s.split("\\-");          int[] t = new int[3];          t[0] = Integer.parseInt(ss[0]);          t[1] = Integer.parseInt(ss[1]);          t[2] = Integer.parseInt(ss[2]);          return t;      }      // 计算任意一年内的总天数 (是365还是366)      public static int calcDay(int y,int m,int d){          int sum = d;    // 每一年的总天数 (初始化为最后一个月的天数)          int i = 0;      // 平年下标为 0          if((y%4==0&amp;&amp;y%100!=0)||(y%400==0)) i = 1; // 闰年下标为 1          for(int j=0;j<m;j++){              sum += days[i][j];          }          return sum;      }      // 判断是否交换输入的两个日期 (日期小者放前)      public static void isSwap(int[] o,int[] n){          if(o[0]>n[0]){   // 日期内容交换              for(int i=0;i<o.length;i++){                  int t = o[i];                  o[i] = n[i];                  n[i] = t;              }          }      }      // 输出      public static String p(int[] s){          StringBuffer sb = new StringBuffer();          for(int i=0;i<s.length-1;i++){              sb.append(s[i]+"-");          }          sb.append(s[s.length-1]);          return sb.toString();      }      // 计算总天数      public static int calc(int[] o, int[] n) {          int sum;          if(n[0]==o[0]){ // 如果年份相等,侧直接计算天数              sum = calcDay(n[0],n[1],n[2])-calcDay(o[0],o[1],o[2]);  // 大的日期天数-小的日期天数          }else{              sum = calcDay(o[0],12,31)-calcDay(o[0],o[1],o[2]);  // 得到第一年日期到下一年开始的天数              for(int i=o[0]+1;i<n[0];i++){    // 中间的每年天数 (不包含第一年和最后一年)                  sum += calcDay(i,12,31);              }              sum += calcDay(n[0],n[1],n[2]); // 加上最后一年的天数          }          return sum;      }      public static void main(String[] args){  //      int[] o = conversion("1949-10-2");          Scanner scan = new Scanner(System.in);          System.out.print("输入日期格式为:(1949-10-2)\n输入第一个日期:");          int[] o = conversion(scan.nextLine());          System.out.print("输入第二个日期:");          int[] n = conversion(scan.nextLine());          int sum = 0;    // 总和          isSwap(o,n);    // 如果o日期小于n日期,侧交换          sum = calc(o, n);   // 计算总天数          System.out.println(p(o)+" 到 "+p(n)+"\n距离"+sum+"天");      }  }
相关栏目:

用户点评