Java计算两个日期相差多少天
发布时间:2020-05-24 19:22:26 所属栏目:Java 来源:互联网
导读:Java计算两个日期相差多少天
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 /*
* 从键盘输入一个日期,格式为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,30,31},{0,29,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&&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[2]); // 得到第一年日期到下一年开始的天数
for(int i=o[0]+1;i<n[0];i++){ // 中间的每年天数 (不包含第一年和最后一年)
sum += calcDay(i,31);
}
sum += calcDay(n[0],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+"天");
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 在Jersey中实现Singleton Resources时使用@Singlet
- Jsp使用HttpSessionBindingListener实现在线人数记录
- Map Map,如何更新内部Map Java 8键
- Android的Px与Dp转化工具类
- java – 如何终止Matcher.find(),当它运行太长时间?
- 如何将H.264 UDP数据包转换为可播放的媒体流或文件(碎片整理
- java – 通过screencap捕获屏幕时出现0字节文件
- java – 为什么我们可以将空值添加到LinkedList DESPITE强烈
- 做一个“内存转储”的java应用程序?
- POI导出excel的一个辅助工具类
