求两个日期的间隔天数

注明:如果想要看两日期间隔天数,则直接跳到"";前面为预备知识;


一、需要使用的类


(1)java.util.Date;

(2)java.util.Calendar;

(3)java.util.GregorianCalendar;

(4)java.text.SimpleDateFormat;


二、Date的用途


Date由于基本已经过时,现在所能使用的地方有几点:

(1)获得当前时间:Date date = new Date();

(2)Date和Calendar转换; (后面会讲)

(3)SimpleDateFormat的解析;(后面会讲)


三、Calendar和GregorianCalendar用法


Calendar被广泛使用是因为他能够很容易的取得所需要的属性,比如年、月、日、分、秒、毫秒、星期等;

常见用法:

(1)GregorianCalendar calendar = new GregorianCalendar(); 获得当前时间;

(2)calendar.setTime(Date date); //将date的时间设置到calendar中;

(3)Date calendar.getTime(); //将calendar转成Date类型;

(4)calendar.get(属性); //根据名称获得属性的值;

(5)calendar.getTimeInMillis(); //获得calendar时间的毫秒数; (是求两日期相差天数的关键)



四、SimpleDateFormat


SimpleDateFormat被广泛使用是因为他能够自定义日期显示的格式;

(1)y表示年; yyyy表示四位的年份,比如2011

(2)M表示月; MM表示两位的月份,比如11

(3)d表示天; dd表示两位的天数 ,比如11

常见用法:

(1)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //设置日期显示格式为yyyy-MM-dd,比如2011-01-01

(2)Date date = sdf.parse(String str); //将字符串解析为Date类型的日期;比如"2011-01-01"解析成2011-01-01的日期;

(3)String str = sdf.format(Date date); //将日期格式化为字符串;


五、求两日期间隔天数


技巧:通过间隔毫秒数求出间隔的天数;
如果知道了间隔的毫秒数,则:
(1) long sec = milli/1000;
(2) long min = sec/60;
(3) long hour = min./60;
(4) long day = hour/24;

package org.exam3; import java.text.SimpleDateFormat; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; public class Test { public static void main(String[] args)throws Exception{ Scanner in = new Scanner(System.in); in.useDelimiter("\n"); System.out.print("开始时间:"); String str1 = in.next(); System.out.println("\n结束时间:"); String str2 = in.next(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse(str1); Date date2 = sdf.parse(str2); GregorianCalendar cal1 = new GregorianCalendar(); GregorianCalendar cal2 = new GregorianCalendar(); cal1.setTime(date1); cal2.setTime(date2); long gap = (cal2.getTimeInMillis()-cal1.getTimeInMillis())/(1000*3600*24);//从间隔毫秒变成间隔天数 System.out.println("\n相差"+gap+"天"); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值