精华内容
下载资源
问答
  • Java8新增了java.time包,提供...其中LocalDate正是本文中使用的可以帮助计算两个日期的间隔天数的类。(其它常用的还有LocalTime, Clock, Instant等,本文不赘述)话不多说,上代码!LocalDate day0 = LocalDate.of(2...

    Java8新增了java.time包,提供了很多新封装好的类,使我们可以摆脱原先使用java.util.Time以及java.util.Calendar带来的复杂。

    其中LocalDate正是本文中使用的可以帮助计算两个日期的间隔天数的类。(其它常用的还有LocalTime, Clock, Instant等,本文不赘述)

    话不多说,上代码!

    LocalDate day0 = LocalDate.of(2014, 1, 1);

    System.out.println(day0.toString());

    LocalDate day1= LocalDate.of(2014, 1, 3);

    System.out.println(day1.toString());

    System.out.println(DAYS.between(day0, day1));

    System.out.println(day1.until(day0));

    System.out.println(day1.until(day0, DAYS));

    可以看到提供了至少三个方法来计算时间间隔天数,三个的返回值不同

    2

    P-2D

    -2

    如果是计算间隔,用

    DAYS.between(day0, day1)

    就可以了。

    为了对比,这里奉上我之前用Calendar的方式写的计算天数。

    这个是简单版本,输入的日期格式必须是“yyyy-MM-dd”,然后计算方法就是先计算中间年份的天数,再加上首尾两年不到一年的天数。

    需要主意的一点是闰年的问题。

    还要说明一下:为什么不用拿到时间戳的毫秒数或者秒数,然后用数值除以一天的毫秒数或者秒数来计算呢?

    一是因为不想计算是否是跨天的情况。

    二是纯粹练习下 java.util.Calendar和它的子类 GregorianCalendar(有个判断闰年的方法)的使用。

    测试用例:

    2016-02-06~2020-02-06 1461

    2016-02-06~2020-03-061490

    2016-03-06~2020-02-061432

    2016-03-06~2020-03-061461

    2016-02-06~2019-02-061096

    2016-02-06~2019-03-061124

    2016-03-06~2019-02-061067

    2016-03-06~2019-03-061095

    2017-02-06~2019-02-06730

    2017-02-06~2019-03-06758

    2017-03-06~2019-02-06702

    2017-03-06~2019-03-06730

    2017-02-06~2020-02-061095

    2017-02-06~2020-03-061124

    2017-03-06~2020-02-061067

    2017-03-06~2020-03-061096

    1 public static void main(String[] args) throwsException {2 String d1 = "2017-02-06";3 String d2 = "2020-03-06";4 calIntervalBetweenTwoDays(d1, d2);5 }6

    7 public static void calIntervalBetweenTwoDays(String d1, String d2) throwsException {8

    9 Date date1 =DATE_FORMAT.parse(d1);10 GregorianCalendar iCalendar = newGregorianCalendar();11 iCalendar.setTime(date1);12

    13 GregorianCalendar jCalendar = newGregorianCalendar();14 Date date2 =DATE_FORMAT.parse(d2);15 jCalendar.setTime(date2);16

    17 int betweenYears = jCalendar.get(Calendar.YEAR) -iCalendar.get(Calendar.YEAR);18 System.out.println("betweenYears: " +betweenYears);19

    20

    21 //先计算首尾两段,然后加上中间年份的

    22 int betweenDays = (365 * (betweenYears - 1));23 intiPart;24 boolean isLeapStart =iCalendar.isLeapYear(iCalendar.get(Calendar.YEAR));25 if(isLeapStart) {26 iPart = 366 -iCalendar.get(Calendar.DAY_OF_YEAR);27 } else{28 iPart = 365 -iCalendar.get(Calendar.DAY_OF_YEAR);29 }30 int jPart =jCalendar.get(Calendar.DAY_OF_YEAR);31 betweenDays += iPart +jPart;32 //修正闰年天数

    33 for (int j = 1; j < betweenYears; j++) {34 iCalendar.set(Calendar.YEAR, iCalendar.get(Calendar.YEAR)+1);35 if(iCalendar.isLeapYear(iCalendar.get(Calendar.YEAR))) {36 System.out.println("There is a leap year.");37 betweenDays++;38 }39 }40

    41 System.out.println("iPart: " + iPart + " ; jPart: " +jPart);42 System.out.println(d1 + " and " + d2 + " are " + betweenDays + " days apart.");43 }

    展开全文
  • Java8新增了java.time包,提供...其中LocalDate正是本文中使用的可以帮助计算两个日期的间隔天数的类。(其它常用的还有LocalTime, Clock, Instant等,本文不赘述) 话不多说,上代码! LocalDate day0 = LocalD...

    Java8新增了java.time包,提供了很多新封装好的类,使我们可以摆脱原先使用java.util.Time以及java.util.Calendar带来的复杂。

    其中LocalDate正是本文中使用的可以帮助计算两个日期的间隔天数的类。(其它常用的还有LocalTime, Clock, Instant等,本文不赘述)

    话不多说,上代码!

    LocalDate day0 = LocalDate.of(2014, 1, 1);
    System.out.println(day0.toString());
    
    LocalDate day1 = LocalDate.of(2014, 1, 3);
    System.out.println(day1.toString());
    
    System.out.println(DAYS.between(day0, day1));
    
    System.out.println(day1.until(day0));
    
    System.out.println(day1.until(day0, DAYS));

    可以看到提供了至少三个方法来计算时间间隔天数,三个的返回值不同

    2
    P-2D
    -2

    如果是计算间隔,用

      DAYS.between(day0, day1)

    就可以了。

    为了对比,这里奉上我之前用Calendar的方式写的计算天数。

     

    这个是简单版本,输入的日期格式必须是“yyyy-MM-dd”,然后计算方法就是先计算中间年份的天数,再加上首尾两年不到一年的天数。

    需要主意的一点是闰年的问题。

    还要说明一下:为什么不用拿到时间戳的毫秒数或者秒数,然后用数值除以一天的毫秒数或者秒数来计算呢?

    一是因为不想计算是否是跨天的情况。

    二是纯粹练习下 java.util.Calendar和它的子类 GregorianCalendar(有个判断闰年的方法)的使用。

    测试用例:

    2016-02-06~2020-02-06   1461
    2016-02-06~2020-03-06	1490
    2016-03-06~2020-02-06	1432
    2016-03-06~2020-03-06	1461
    
    2016-02-06~2019-02-06	1096
    2016-02-06~2019-03-06	1124
    2016-03-06~2019-02-06	1067
    2016-03-06~2019-03-06	1095
    
    2017-02-06~2019-02-06	730
    2017-02-06~2019-03-06	758
    2017-03-06~2019-02-06	702
    2017-03-06~2019-03-06	730
    
    2017-02-06~2020-02-06	1095
    2017-02-06~2020-03-06	1124
    2017-03-06~2020-02-06	1067
    2017-03-06~2020-03-06	1096
    

      

     

     1 public static void main(String[] args) throws Exception {
     2         String d1 = "2017-02-06";
     3         String d2 = "2020-03-06";
     4         calIntervalBetweenTwoDays(d1, d2);
     5     }
     6 
     7     public static void calIntervalBetweenTwoDays(String d1, String d2) throws Exception {
     8 
     9         Date date1 = DATE_FORMAT.parse(d1);
    10         GregorianCalendar iCalendar = new GregorianCalendar();
    11         iCalendar.setTime(date1);
    12 
    13         GregorianCalendar jCalendar = new GregorianCalendar();
    14         Date date2 = DATE_FORMAT.parse(d2);
    15         jCalendar.setTime(date2);
    16 
    17         int betweenYears = jCalendar.get(Calendar.YEAR) - iCalendar.get(Calendar.YEAR);
    18         System.out.println("betweenYears: " + betweenYears);
    19 
    20 
    21         // 先计算首尾两段,然后加上中间年份的
    22         int betweenDays = (365 * (betweenYears - 1));
    23         int iPart;
    24         boolean isLeapStart = iCalendar.isLeapYear(iCalendar.get(Calendar.YEAR));
    25         if (isLeapStart) {
    26             iPart = 366 - iCalendar.get(Calendar.DAY_OF_YEAR);
    27         } else {
    28             iPart = 365 - iCalendar.get(Calendar.DAY_OF_YEAR);
    29         }
    30         int jPart = jCalendar.get(Calendar.DAY_OF_YEAR);
    31         betweenDays += iPart + jPart;
    32         // 修正闰年天数
    33         for (int j = 1; j < betweenYears; j++) {
    34             iCalendar.set(Calendar.YEAR, iCalendar.get(Calendar.YEAR)+1);
    35             if (iCalendar.isLeapYear(iCalendar.get(Calendar.YEAR))) {
    36                 System.out.println("There is a leap year.");
    37                 betweenDays++;
    38             }
    39         }
    40 
    41         System.out.println("iPart: " + iPart + " ; jPart: " + jPart);
    42         System.out.println(d1 + " and " + d2 + " are " + betweenDays + " days apart.");
    43     }

     

    转载于:https://www.cnblogs.com/bityinjd/p/9144234.html

    展开全文
  • 今天做项目时候遇到了日期间隔天数的问题,分享一下:

    今天做项目的时候遇到了日期间隔天数的问题,分享一下:

    展开全文
  • 产品让计算2019-06-15 11:01:28距离现在2019-06-13 20:14天数差是...思路:实际上间隔天数并不需要具体时间,因此需要把时间清零来计算。 public static Long getDaysBetween(Date startDate, Date endDate) { ...

    产品让计算2019-06-15 11:01:28距离现在2019-06-13 20:14天数差是多少?

    谷歌了很多都是拿毫秒计算的,不适合我,比如:上面这个时间上算大概1.6天,但是其实是隔3天的!

    思路:实际上间隔天数并不需要具体的时间,因此需要把时间清零来计算。

    867aab7806d9ec4262a2d388f60f54cc.png
      public static Long getDaysBetween(Date startDate, Date endDate) {
            Calendar fromCalendar = Calendar.getInstance();
            fromCalendar.setTime(startDate);
            fromCalendar.set(Calendar.HOUR_OF_DAY, 0);
            fromCalendar.set(Calendar.MINUTE, 0);
            fromCalendar.set(Calendar.SECOND, 0);
            fromCalendar.set(Calendar.MILLISECOND, 0);
    
            Calendar toCalendar = Calendar.getInstance();
            toCalendar.setTime(endDate);
            toCalendar.set(Calendar.HOUR_OF_DAY, 0);
            toCalendar.set(Calendar.MINUTE, 0);
            toCalendar.set(Calendar.SECOND, 0);
            toCalendar.set(Calendar.MILLISECOND, 0);
    
            return ((toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24) + 1);
    
        }
    展开全文
  • 在做一需求的时候, 碰到一非常难办的需求:用户在设置了宝宝出生日期的时候, 在页面上显示宝宝的年龄. 显示的格式为 “xx年xx月xx天”.乍一看很简单, 直接用 getTime() 减出毫秒数, 然后去模除就行了. 但是这...
  • Java 方式 获取 两个日期间隔天数 代码如下: SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); Date begindate = null; Date enddate = null; Long day = null; try { ...
  • 用途:返回两个日期之间年月日间隔数。常使用DATEDIF函数计算两日期之差。比较单位包含D,M,Y,YD,YM,MD;用英文状态下双引号""引用。第三个参数注释:“Y"--两个日期相距年数;满一年才加1。“M"--两个日期相距...
  • 侵删 Java计算两个日期时间之间的天数最简方法 更新时间:2018年07月24日 08:...这篇文章给大家分享了Java计算两个日期时间之间的天数最简单实现方法,有兴趣朋友可以参考学习下。 有一种low方式,...
  • 产品让计算2019-06-15 11:01:28距离现在2019-06-13 20:14天数差是多少?谷歌了很多都是拿毫秒计算的,不适合我,比如:上面这时间上算...思路:实际上间隔天数并不需要具体时间,因此需要把时间清零来计算。public ...
  • 主要思路:对于任意2个日期比如:date_start=2006-10-1、date_end=2006-10-14 ,首先计算这连个日期之间时间间隔天数),然后分别对date_start 和date_end 取得它们下一个星期一日期,这样就可以得到一个新...
  • java中求两个日期间隔天数 之前在看到很多类似这样写法  Java代码  (date1.getTime()-date2.getTime())/24*60*60*1000  这样得到天数并不是很准确,比如昨天10点,到今天某个时间计算出来...
  • java实现计算两个日期间间隔天数

    千次阅读 2012-04-11 14:33:15
    SimpleDateFormat df=new SimpleDateFormat( "yyyy-MM-dd");  Date d1,d2;... //读取文本框中输入字符串,并将其转化为日期格式  d2= df.parse(text2);  if(d2.getTime()>d1.getTime())
  • public static void main(String[] args) throws Exception{ Date date = new Date();   try{  ... Date m_endTime = new java.text.SimpleDateFormat("yyyy-MM-dd").parse("2014-1-1");   
  • Java编程技巧1001条》第9部分 java日期函数第371条 计算两个日期之间天数371 Creating a days Between Function371 建立一个计算间隔天数的函数Because the Date class lets your programs express dates in...
  • import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTest { public static void m...
  • 功能描述:两个日期相减得到天数,判断两个时间间隔是否大于7天 public static void main(String[] args) { String str1 = "2014-05-10"; SimpleDateFormat sdf = new SimpleDateFormat("...
  • 主要思路:对于任意2个日期比如:date_start=2006-10-1、date_end=2006-10-14 ,首先计算这连个日期之间时间间隔(天数),然后分别对date_start 和date_end 取得它们下一个星期一日期,这样就可以得到一个新...
  • 主要思路: 对于任意2个日期比如:date_start=2010-8-1、date_end=2010-9-5 ,首先计算这连个日期之间时间间隔天数),然后分别对date_start 和date_end 取得它们下一个星期一日期,这样就可以得到一个新...
  • www说5行代码无循环解决方案定义之间的天数的方式与ChronoUnit.DAYS.between(start, end)表示4星期一至星期五之间存在天数的方式相同。由于我们只对工作日感兴趣,因此我们必须减去周末,因此从星期五到星期二会有...
  • 对于任意2个日期比如:date_start=2006-10-1、date_end=2006-10-14 ,首先计算这连个日期之间时间间隔天数),然后分别对date_start 和date_end 取得它们下一个星期一日期,这样就可以得到一个新可以整除7...
  • * 计算两个日期之间相差的天数 */ public int BetweenDays(String startDate,String endDate){ startDate = startDate + " 00:00:00"; endDate = endDate + " 00:00:00"; // 获取日期 Date date1 = MyDa...
  • 从实现上来看无非就是持久化存入用户第一次使用应用时间firstTime(通过SharedPreferences 、xml、sqlite等),当用户再次使用应用时取得此时时间presentTime,通过两个时间计算间隔天数。当取得两个时间变量后,...
  • 对于任意2个日期比如:date_start=2006-10-1、date_end=2006-10-14 ,首先计算这连个日期之间时间间隔天数),然后分别对date_start 和date_end 取得它们下一个星期一日期,这样就可以得到一个新可以...

空空如也

空空如也

1 2 3 4
收藏数 80
精华内容 32
关键字:

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

java 订阅