知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
Java中對兩個日期時間的比較方法
發(fā)表時間:2021-1-4
發(fā)布人:葵宇科技
瀏覽次數(shù):62
package com.raipeng.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TestTime { public static void main(String[] args) { // TODO Auto-generated method stub String firstTime = "2015-01-07 08:52"; String secondTime = "2015-01-07 11:53"; CompareDateTime(firstTime, secondTime); String thirdTime = "2015-01-07 08:52"; String fourthTime = "2015-01-07 12:53"; CompareDateTime(thirdTime, fourthTime); String fifthTime = "2015-01-07 08:52"; String sixthTime = "2015-01-07 13:53"; CompareDateTime(fifthTime, sixthTime); String date1 = "2014-12-03"; String date2 = "2015-01-07"; System.out.println("天數(shù)=="+daysBetween(date1, date2)); System.out.println("后一天=="+getSpecifiedDayAfter(date1)); } public static boolean CompareDateTime(String time1, String time2) { boolean isFirstBig = false; DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); try { Date date1 = dateFormat.parse(time1); Date date2 = dateFormat.parse(time2); System.out.println("date1==" +date1.getTime()); System.out.println("date2==" +date2.getTime()); // Method 1 if (date1.getTime() > date2.getTime()) { System.out.println("M1--date1在date2后"); isFirstBig = true; } else if (date1.getTime() < date2.getTime()) { System.out.println("M1--date1在date2前"); isFirstBig = false; } // Method 2 if (date1.compareTo(date2) == 1) { System.out.println("M2--date1在date2后"); isFirstBig = true; } else if (date1.getTime() < date2.getTime()) { System.out.println("M2--date1在date2前"); isFirstBig = false; } // Method 3 Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setTime(date1); cal2.setTime(date2); if (cal1.after(cal2)) { System.out.println("M3--date1在date2后"); } else { System.out.println("M3--date1在date2前"); } } catch (Exception exception) { exception.printStackTrace(); } return isFirstBig; } /** * 計算兩天之間的天數(shù) * @param startStr * @param endStr * @return */ public static int daysBetween(String startStr, String endStr) { int daysBetween = 0; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse(startStr); Calendar startDate = Calendar.getInstance(); startDate.setTime(date1); Date date2 = sdf.parse(endStr); Calendar endDate = Calendar.getInstance(); endDate.setTime(date2); Calendar date = (Calendar) startDate.clone(); while (date.before(endDate)) { date.add(Calendar.DAY_OF_MONTH, 1); daysBetween++; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return daysBetween; } /** * 獲得指定日期的后一天 * * @param specifiedDay * @return */ public static String getSpecifiedDayAfter(String specifiedDay) { Calendar c = Calendar.getInstance(); Date date = null; try { date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay); } catch (ParseException e) { e.printStackTrace(); } c.setTime(date); int day = c.get(Calendar.DATE); c.set(Calendar.DATE, day + 1); String dayAfter = new SimpleDateFormat("yyyy-MM-dd") .format(c.getTime()); return dayAfter; } }
在Java中比較時間或者日期基本上都要轉換成Date類型,以上代碼主要提供三個比較的方法,compareTo、getTime、after,另外還提供計算兩個日期之間的間隔天數(shù),以及根據(jù)當前日期獲取后一天的日期的方法
代碼雖然簡單,但粗心大意的我卻在這上面耗費了近半天的時間
問題描述:如上,有三組時間對,其中第二組的第二個時間為12點多,在沒改之前,只有這組的返回結果是錯誤的,調試半天找不到原因,后來有網(wǎng)友建議把gettime的值打印出來看看,打出來后發(fā)現(xiàn)12點多返回的long值確實比其他幾個都小很多,然后把年月日去掉直接比較時間還是同樣的結果,然后就突然意識到可能是“時”這個單位的問題,然后就看到了這行代碼
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");下意識的將這行代碼改為
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");看來區(qū)別只在于hh的大小寫,然后運行結果就正確了
然后在博客園看到這樣一篇文章 日期格式化{0:yyyy-MM-dd HH:mm:ss.fff}和{0:yyyy-MM-dd hh:mm:ss.fff}的區(qū)別
{0:yyyy-MM-dd HH:mm:ss.fff}:使用24小時制格式化日期
{0:yyyy-MM-dd hh:mm:ss.fff}:使用12小時制格式化日期
原來就是24小時制和12小時制格式的區(qū)別,所以大家以后要注意了
同理還有這個Calendar.HOUR_OF_DAY和Calendar.HOUR,前者是24小時,后者是12小時
上面java代碼運行后控制臺輸出如下:
date1==1420591920000 date2==1420602780000 M1--date1在date2前 M2--date1在date2前 M3--date1在date2前 date1==1420591920000 date2==1420606380000 M1--date1在date2前 M2--date1在date2前 M3--date1在date2前 date1==1420591920000 date2==1420609980000 M1--date1在date2前 M2--date1在date2前 M3--date1在date2前 天數(shù)==35 后一天==2014-12-04
相關案例查看更多
相關閱讀
- 云南網(wǎng)絡營銷顧問
- 網(wǎng)站建設價格
- 汽車報廢
- 昆明網(wǎng)站建設公司
- 云南網(wǎng)站建設百度官方
- 網(wǎng)站建設招商
- 網(wǎng)站優(yōu)化公司
- 昆明網(wǎng)站制作
- 云南網(wǎng)站建設公司排名
- 軟件定制公司
- 云南小程序哪家好
- 楚雄網(wǎng)站建設公司
- 網(wǎng)站優(yōu)化
- 云南企業(yè)網(wǎng)站
- 云南網(wǎng)頁制作
- 小程序開發(fā)平臺前十名
- 手機網(wǎng)站建設
- 網(wǎng)絡公司聯(lián)系方式
- 汽車報廢管理
- 軟件開發(fā)
- 旅游網(wǎng)站建設
- 云南網(wǎng)站建設公司哪家好
- 云南網(wǎng)站建設哪家公司好
- 網(wǎng)站開發(fā)公司哪家好
- 網(wǎng)站建設哪家強
- 云南網(wǎng)站建設高手
- 云南建設廳網(wǎng)站
- painter
- 網(wǎng)站建設專業(yè)品牌
- 關鍵詞快速排名