国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java 進(jìn)行時(shí)間處理的步驟

發(fā)布時(shí)間:2021-07-05 18:40 來(lái)源:腳本之家 閱讀:0 作者:迷途者尋影而行 欄目: 開(kāi)發(fā)技術(shù)

目錄

          一、Calendar

          (1)、Calender介紹

          Calendar的中文翻譯是日歷,實(shí)際上,在歷史上有著(zhù)許多種計時(shí)的方法。所以為了計時(shí)的統一,必需指定一個(gè)日歷的選擇。那現在最為普及和通用的日歷就是"Gregorian Calendar"。也就是我們在講述年份時(shí)常用"公元**年"。Calendar 在 Java 中是一個(gè)抽象類(lèi)(Abstract Class),GregorianCalendar 是它的一個(gè)具體實(shí)現。Calendar.getInstance()中所獲得的實(shí)例就是一個(gè)"GreogrianCalendar"對象。

          (2)、簡(jiǎn)單的日期使用

          Calendar cal = Calendar.getInstance();
          System.out.println(cal.get(Calendar.DATE));//-----------------------今天是幾號
          System.out.println(cal.get(Calendar.DAY_OF_MONTH));//---------------今天是一月的第幾天
          System.out.println(cal.get(Calendar.DAY_OF_WEEK));//----------------從星期天開(kāi)始計算,如果今天星期二,那么返回3
          System.out.println( cal.get(Calendar.DAY_OF_YEAR));//----------------今天是一年的第幾天
          System.out.println( cal.get(Calendar.HOUR));//-----------------------現在是幾點(diǎn)     12小時(shí)制
          System.out.println( cal.get(Calendar.HOUR_OF_DAY));//----------------現在是幾點(diǎn)     24小時(shí)制,一般使用這個(gè)屬性賦值
          System.out.println(cal.get(Calendar.MILLISECOND));//----------------現在的毫秒
          System.out.println( cal.get(Calendar.MINUTE));//---------------------現在是幾分
          System.out.println( cal.get(Calendar.SECOND));//---------------------現在是幾秒
          System.out.println(cal.get(Calendar.WEEK_OF_MONTH));//--------------現在是一個(gè)月中的第幾周
          System.out.println(cal.get(Calendar.WEEK_OF_YEAR));//----------------現在是一個(gè)年中的第幾周
          System.out.println(cal.get(Calendar.MONTH));//-----------------------月份獲取需要 +1,那么,賦值時(shí)需要 -1
          
          System.out.println(cal.get(Calendar.MONTH)-1);     //即可獲得上個(gè)月的月份
          

          (3)、與Date之間的轉換

          Calendar calendar = Calendar.getInstance();
          // 從一個(gè)Calendar 對象中獲取 Date 對象
          
          Date date = calendar.getTime();
          
          // 將 Date 對象反應到一個(gè) Calendar 對象中,
          // 先獲得一個(gè)實(shí)例,然后設置 Date 對象
          calendar.setTime(date);
          
          月份的起始值為0而不是1,所以要設置八月時(shí),我們用7而不是8。
          calendar.set(Calendar.MONTH, 7);
          
          計算2000-01-01是星期幾
          
          calendar.set(2000,1,1)
          
          calendar.get(calendar.DAY_OF_WEEK )
          

          當然Calender是最早的時(shí)間處理,是jdk1.6的東西難免比較過(guò)時(shí)

          二、Apache下的DateUtils

          (1)、引入包

          <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-lang3</artifactId>
                 <version>3.9</version>
          </dependency>
          

          (2)、沒(méi)什么可說(shuō)的上翻譯就行

              /**
               * 以秒為標準時(shí)間的毫秒數
               */
              public static final long MILLIS_PER_SECOND = 1000
              /**
               *以分鐘為標準時(shí)間的毫秒數
               */
              public static final long MILLIS_PER_MINUTE = 60 * MILLIS_PER_SECOND
              /**
               *以小時(shí)為標準時(shí)間的毫秒數
               */
              public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE
              /**
               * 以天為標準時(shí)間的毫秒數
               */
              public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR
              /**
               * 這個(gè)類(lèi)型是半個(gè)月, 所以這可以代表日期是上還是下半個(gè)月 。
               */
              public static final int SEMI_MONTH = 1001
              /**
               * 周范圍, 從星期日開(kāi)始 。
               */
              public static final int RANGE_WEEK_SUNDAY = 1
              /**
               * 周范圍,從星期一開(kāi)始 。
               */
              public static final int RANGE_WEEK_MONDAY = 2
              /**
               * 周范圍,從關(guān)注的那天開(kāi)始。
               */
              public static final int RANGE_WEEK_RELATIVE = 3
              /**
               * 周范圍,以關(guān)注的天為中心。
               */
              public static final int RANGE_WEEK_CENTER = 4
               /**
               * 月范圍,從星期日開(kāi)始 。
               */
              public static final int RANGE_MONTH_SUNDAY = 5
              /**
               * 月范圍,從星期一開(kāi)始 。
               */
              public static final int RANGE_MONTH_MONDAY = 6
               /**
               * 不應在標準編成構造獲取實(shí)列, 而應該直接使用類(lèi)中的靜態(tài)方法,如:DateUtils.parseDate(str) 。
               * 此構造函數意在允許需要一個(gè)javabeen實(shí)列的工具中使用 。  
               */
              public DateUtils()
              /**
               * 判斷兩個(gè)日期時(shí)間是否是同一天 。
               *
               * @param date1  第一個(gè)日期,不可修改,非null
               * @param date2  第二個(gè)日期,不可修改,非null
               */
              public static boolean isSameDay(final Date date1, final Date date2)
              /**
               * 判斷兩個(gè)日歷時(shí)間是否是同一天 。   
               *
               * @param cal1  第一個(gè)日歷,不可修改,非null
               * @param cal2  第二個(gè)日歷,不可修改,非null
               */
              public static boolean isSameDay(final Calendar cal1, final Calendar cal2)
              /**
               * 判斷兩個(gè)日期是否相同
               * 這種方法比較兩個(gè)對象的毫秒時(shí)間 
               *
               * @param date1  第一個(gè)日期,不可修改,非null
               * @param date2  第二個(gè)日期,不可修改,非null
               */
              public static boolean isSameInstant(final Date date1, final Date date2)
              /**
               * 判斷兩個(gè)日歷是否相同
               * 這種方法比較兩個(gè)對象的毫秒時(shí)間 
               *
               * @param cal1  第一個(gè)日歷,不可修改,非null
               * @param cal2  第二個(gè)日歷,不可修改,非null
               */
              public static boolean isSameInstant(final Calendar cal1, final Calendar cal2)
              /**
               * 判斷兩個(gè)日歷本地時(shí)間是否相同
               * 除了比較數值外兩個(gè)日歷對象的類(lèi)型還要相同
               *
               * @param cal1  第一個(gè)日歷,不可修改,非null
               * @param cal2  第二個(gè)日歷,不可修改,非null
               */
              public static boolean isSameLocalTime(final Calendar cal1, final Calendar cal2)
              /**
               * 嘗試用parsePatterns中各種不同的日期格式解析代表時(shí)間的字符串str 。
               * 
               * 解析時(shí)會(huì )逐個(gè)使用parsePatterns中的格式,如果都沒(méi)有匹配上, 則拋出異常ParseException 。
               * 
               * @param str  被解析的時(shí)間字符串,非null
               * @param parsePatterns  用于解析str的時(shí)間格式,有一個(gè)或幾個(gè),非null
               */
              public static Date parseDate(final String str, final String... parsePatterns) throws ParseException
              /**
               * 嘗試用parsePatterns中各種不同的日期格式解析代表時(shí)間的字符串str 。
               * 解析時(shí)會(huì )使用給定的日期格式符locale 。
               * 
               * 解析時(shí)會(huì )逐個(gè)使用parsePatterns中的格式,如果都沒(méi)有匹配上, 則拋出異常ParseException 。
               * 
               * @param str  被解析的時(shí)間字符串,非null
               * @param locale 使用locale中的日期格式符,如果為null,則使用系統默認的locale
               * @param parsePatterns  用于解析str的時(shí)間格式,有一個(gè)或幾個(gè),非null
               */
              public static Date parseDate(final String str, final Locale locale, final String... parsePatterns) throws ParseException
              /**
               * 嘗試用parsePatterns中各種不同的日期格式解析代表時(shí)間的字符串str 。
               *
               * 解析時(shí)會(huì )逐個(gè)使用parsePatterns中的格式,如果都沒(méi)有匹配上, 則拋出異常ParseException 。
               * 解析器解析嚴格不允許的日期, 如:"February 942, 1996" 。
               * 
               * @param str  被解析的時(shí)間字符串,非null
               * @param parsePatterns  用于解析str的時(shí)間格式,有一個(gè)或幾個(gè),非null
               */
              public static Date parseDateStrictly(final String str, final String... parsePatterns) throws ParseException
              /**
               * 嘗試用parsePatterns中各種不同的日期格式解析代表時(shí)間的字符串str 。
               * 解析時(shí)會(huì )使用給定的日期格式符locale 。
               *
               * 解析時(shí)會(huì )逐個(gè)使用parsePatterns中的格式,如果都沒(méi)有匹配上, 則拋出異常ParseException 。
               * 解析器解析嚴格不允許的日期, 如:"February 942, 1996" 。
               * 
               * @param str  被解析的時(shí)間字符串,非null
               * @param locale 使用locale中的日期格式符,如果為null,則使用系統默認的locale
               * @param parsePatterns  用于解析str的時(shí)間格式,有一個(gè)或幾個(gè),非null
               */
              public static Date parseDateStrictly(final String str, final Locale locale, final String... parsePatterns) throws ParseException
              /**
               * 在日期date上增加amount年 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的年數,可能為負數
               */
              public static Date addYears(final Date date, final int amount)
              /**
               * 在日期date上增加amount月 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的月數,可能為負數
               */
              public static Date addMonths(final Date date, final int amount)
              /**
               * 在日期date上增加amount周 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的周數,可能為負數
               */
              public static Date addWeeks(final Date date, final int amount)
              /**
               * 在日期date上增加amount天 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的天數,可能為負數
               */
              public static Date addDays(final Date date, final int amount)
              /**
               * 在日期date上增加amount小時(shí) 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的小時(shí)數,可能為負數
               */
              public static Date addHours(final Date date, final int amount)
              /**
               * 在日期date上增加amount分鐘 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的分鐘數,可能為負數
               */
              public static Date addMinutes(final Date date, final int amount)
              /**
               * 在日期date上增加amount秒 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的秒數,可能為負數
               */
              public static Date addSeconds(final Date date, final int amount)
              /**
               * 在日期date上增加amount 毫秒 。
               *
               * @param date  處理的日期,非null
               * @param amount  要加的毫秒數,可能為負數
               */
              public static Date addMilliseconds(final Date date, final int amount)
               /**
               * 給日期data設置一個(gè)新的年份 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的年份
               */
              public static Date setYears(final Date date, final int amount)
               /**
               * 給日期data設置一個(gè)新的月份 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的月份
               */
              public static Date setMonths(final Date date, final int amount)
              /**
               * 給日期data設置一個(gè)新的天 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的天
               */
              public static Date setDays(final Date date, final int amount)
              /**
               * 給日期data設置一個(gè)新的小時(shí) 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的小時(shí)
               */
              public static Date setHours(final Date date, final int amount)
               /**
               * 給日期data設置一個(gè)新的分鐘 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的分鐘
               */
              public static Date setMinutes(final Date date, final int amount)
              /**
               * 給日期data設置一個(gè)新的秒 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的秒
               */
              public static Date setSeconds(final Date date, final int amount)
              /**
               * 給日期data設置一個(gè)新的毫秒 。
               *
               * @param date 處理的日期,非null
               * @param amount 要設置的毫秒
               */
              public static Date setMilliseconds(final Date date, final int amount)
              /**
               * 將一個(gè)日期放到日歷中 。
               */
              public static Calendar toCalendar(final Date date)
              /**
               * 根據閾值field四舍五入日歷date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 14:00:00.000;
               * 如果field為MONTH,它將返回 1 April 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值
               */
              public static Date round(final Date date, final int field)
              /**
               * 根據閾值field四舍五入日歷date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 14:00:00.000;
               * 如果field為MONTH,它將返回 1 April 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值  
               */
              public static Calendar round(final Calendar date, final int field)
              /**
               * 根據閾值field四舍五入日歷date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 14:00:00.000;
               * 如果field為MONTH,它將返回 1 April 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值 
               */
              public static Date round(final Object date, final int field)
              /**
               * 根據閾值field截取日期date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 13:00:00.000;
               * 如果field為MONTH,它將返回 1 Mar 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值 
               */
              public static Date truncate(final Date date, final int field)
               /**
               * 根據閾值field截取日歷date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 13:00:00.000;
               * 如果field為MONTH,它將返回 1 Mar 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值
               */
              public static Calendar truncate(final Calendar date, final int field)
              /**
               * 根據閾值field截取日期date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 13:00:00.000;
               * 如果field為MONTH,它將返回 1 Mar 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值
               */
              public static Date truncate(final Object date, final int field)
              /**
               * 根據閾值field向上舍入日期date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 14:00:00.000;
               * 如果field為MONTH,它將返回 1 Apr 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值
               */
              public static Date ceiling(final Date date, final int field)
              /**
               * 根據閾值field向上舍入日期date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 14:00:00.000;
               * 如果field為MONTH,它將返回 1 Apr 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值
               */
              public static Calendar ceiling(final Calendar date, final int field)
              /**
               * 根據閾值field向上舍入日期date 。
               *
               * 例如, 如果你的時(shí)間是 28 Mar 2002 13:45:01.231,
               * 如果field為HOUR,它將返回 28 Mar 2002 14:00:00.000;
               * 如果field為MONTH,它將返回 1 Apr 2002 0:00:00.000 。
               * 
               * @param date  處理的日期,非null
               * @param field  閾值
               */
              public static Date ceiling(final Object date, final int field)
              /**
               * 根據指定的時(shí)間focus和范圍類(lèi)型rangeStyle構建一個(gè)時(shí)間范圍迭代器 。
               *
               * 如傳入的時(shí)間是Thursday, July 4, 2002,范圍類(lèi)型是RANGE_MONTH_SUNDAY,
               * 則返回迭代器的范圍是從Sunday, June 30, 2002 到 Saturday, August 3, 2002
               *
               * @param focus  指定的時(shí)間
               * @param rangeStyle  范圍類(lèi)型,值必須是如下之一:
               * DateUtils.RANGE_MONTH_SUNDAY, 
               * DateUtils.RANGE_MONTH_MONDAY,
               * DateUtils.RANGE_WEEK_SUNDAY,
               * DateUtils.RANGE_WEEK_MONDAY,
               * DateUtils.RANGE_WEEK_RELATIVE,
               * DateUtils.RANGE_WEEK_CENTER
               */
              public static Iterator<Calendar> iterator(final Date focus, final int rangeStyle)
              /**
               * 根據指定的時(shí)間focus和范圍類(lèi)型rangeStyle構建一個(gè)時(shí)間范圍迭代器 。
               *
               * 如傳入的時(shí)間是Thursday, July 4, 2002,范圍類(lèi)型是RANGE_MONTH_SUNDAY,
               * 則返回迭代器的范圍是從Sunday, June 30, 2002 到 Saturday, August 3, 2002
               *
               * @param focus  指定的時(shí)間
               * @param rangeStyle  范圍類(lèi)型,值必須是如下之一:
               * DateUtils.RANGE_MONTH_SUNDAY, 
               * DateUtils.RANGE_MONTH_MONDAY,
               * DateUtils.RANGE_WEEK_SUNDAY,
               * DateUtils.RANGE_WEEK_MONDAY,
               * DateUtils.RANGE_WEEK_RELATIVE,
               * DateUtils.RANGE_WEEK_CENTER
               */
              public static Iterator<Calendar> iterator(final Calendar focus, final int rangeStyle)
              /**
               * 根據指定的時(shí)間focus和范圍類(lèi)型rangeStyle構建一個(gè)時(shí)間范圍迭代器 。
               *
               * 如傳入的時(shí)間是Thursday, July 4, 2002,范圍類(lèi)型是RANGE_MONTH_SUNDAY,
               * 則返回迭代器的范圍是從Sunday, June 30, 2002 到 Saturday, August 3, 2002
               *
               * @param focus  指定的時(shí)間
               * @param rangeStyle  范圍類(lèi)型,值必須是iterator(Calendar, int)方法注釋中列出的
               */
              public static Iterator<?> iterator(final Object focus, final int rangeStyle)
           
          /**
               * 返回指定分段內的毫秒數 。 所有大于分段的DateFields將被忽略 。
               *
               * 請求任何日期毫秒,將返回當前秒的毫秒數 (返回一個(gè)數字在0和999之間) 。
               * 有效的分段值是: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_YEAR、
               * Calendar.DATE、Calendar.HOUR_OF_DAY、Calendar.MINUTE、
               * Calendar.SECOND 和 Calendar.MILLISECOND
               * 分段值小于或等于MILLISECOND,將返回0 。
               * 
               *  January 1, 2008 7:15:10.538 with Calendar.SECOND as fragment will return 538
               *  January 6, 2008 7:15:10.538 with Calendar.SECOND as fragment will return 538
               *  January 6, 2008 7:15:10.538 with Calendar.MINUTE as fragment will return 10538
               *  January 16, 2008 7:15:10.538 with Calendar.MILLISECOND as fragment will return 0
               *   (a millisecond cannot be split in milliseconds)
               * 
               * @param calendar 獲取值得日歷對象,非null
               * @param fragment 分段值
               */
            public static long getFragmentInMilliseconds(final Calendar calendar, final int fragment)
              /**
               * 返回指定分段內的秒數 。 所有大于分段的DateFields將被忽略 。
               *
               * 請求任何日期秒,將返回當前的分鐘的秒數 (返回一個(gè)數字在0和59之間) 。
               * 有效的分段值是: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_YEAR、
               * Calendar.DATE、Calendar.HOUR_OF_DAY、Calendar.MINUTE、
               * Calendar.SECOND 和 Calendar.MILLISECOND
               * 分段值小于或等于SECOND,將返回0 。
               * 
               *  January 1, 2008 7:15:10.538 with Calendar.MINUTE as fragment will return 10
               *  January 6, 2008 7:15:10.538 with Calendar.MINUTE as fragment will return 10
               *  January 6, 2008 7:15:10.538 with Calendar.DAY_OF_YEAR as fragment will return 26110
               *   (7*3600 + 15*60 + 10)</li>
               *  January 16, 2008 7:15:10.538 with Calendar.MILLISECOND as fragment will return 0
               * 
               * @param calendar 獲取值得日歷對象,非null
               * @param fragment 分段值
               */
              public static long getFragmentInSeconds(final Calendar calendar, final int fragment)
              /**
               * 返回指定分段內的分鐘數 。 所有大于分段的DateFields將被忽略 。
               *
               * 請求任何日期分鐘,將返回當前的小時(shí)的分鐘數 (返回一個(gè)數字在0和59之間)
               * 有效的分段值是: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_YEAR、
               * Calendar.DATE、Calendar.HOUR_OF_DAY、Calendar.MINUTE、
               * Calendar.SECOND 和 Calendar.MILLISECOND
               * 分段值小于或等于MINUTE,將返回0 。
               * 
               *  January 1, 2008 7:15:10.538 with Calendar.HOUR_OF_DAY as fragment will return 15
               *  January 6, 2008 7:15:10.538 with Calendar.HOUR_OF_DAY as fragment will return 15
               *  January 1, 2008 7:15:10.538 with Calendar.MONTH as fragment will return 15
               *  January 6, 2008 7:15:10.538 with Calendar.MONTH as fragment will return 435 (7*60 + 15)
               *  January 16, 2008 7:15:10.538 with Calendar.MILLISECOND as fragment will return 0
               * 
               * @param calendar 獲取值得日歷對象,非null
               * @param fragment 分段值
               */
              public static long getFragmentInMinutes(final Calendar calendar, final int fragment)
              /**
               * 返回指定分段內的小時(shí)數 。 所有大于分段的DateFields將被忽略 。
               *
               * 請求任何日期小時(shí),將返回當前的天的小時(shí)數 (返回一個(gè)數字在0和23之間) 。
               * 有效的分段值是: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_YEAR、
               * Calendar.DATE、Calendar.HOUR_OF_DAY、Calendar.MINUTE、
               * Calendar.SECOND 和 Calendar.MILLISECOND
               * 分段值小于或等于HOUR_OF_DAY,將返回0 。
               *  
               *  January 1, 2008 7:15:10.538 with Calendar.DAY_OF_YEAR as fragment will return 7
               *  January 6, 2008 7:15:10.538 with Calendar.DAY_OF_YEAR as fragment will return 7
               *  January 1, 2008 7:15:10.538 with Calendar.MONTH as fragment will return 7
               *  January 6, 2008 7:15:10.538 with Calendar.MONTH as fragment will return 127 (5*24 + 7)
               *  January 16, 2008 7:15:10.538 with Calendar.MILLISECOND as fragment will return 0
               *  
               * @param calendar 獲取值得日歷對象,非null
               * @param fragment 分段值
               */
              public static long getFragmentInHours(final Calendar calendar, final int fragment)
              /**
               * 返回指定分段內的天數 。 所有大于分段的DateFields將被忽略 。
               *
               * 請求任何日期天數,將返回當前的月的天數 (返回一個(gè)數字在1和31之間) 。
               * 有效的分段值是: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_YEAR、
               * Calendar.DATE、Calendar.HOUR_OF_DAY、Calendar.MINUTE、
               * Calendar.SECOND 和 Calendar.MILLISECOND
               * 分段值小于或等于DATE,將返回0 。
               * 
               *  January 28, 2008 with Calendar.MONTH as fragment will return 28
               *  February 28, 2008 with Calendar.MONTH as fragment will return 28
               *  January 28, 2008 with Calendar.YEAR as fragment will return 28
               *  February 28, 2008 with Calendar.YEAR as fragment will return 59
               *  January 28, 2008 with Calendar.MILLISECOND as fragment will return 0
               * 
               * @param calendar 獲取值得日歷對象,非null
               * @param fragment 分段值
               */
              public static long getFragmentInDays(final Calendar calendar, final int fragment)
              /**
               * 截取比較兩個(gè)日歷對象的field處的值是否相同 。
               * 
               * @param cal1 第一個(gè)日歷對象,非null
               * @param cal2 第二個(gè)日歷對象,非null
               * @param field Calendar中的閾值
               */
              public static boolean truncatedEquals(final Calendar cal1, final Calendar cal2, final int field)
              /**
               * 截取比較兩個(gè)日期對象的field處的值是否相同 。
               * 
               * @param date1 第一個(gè)日期對象,非null
               * @param date2 第二個(gè)日期對象,非null
               * @param field Calendar中的閾值
               */
              public static boolean truncatedEquals(final Date date1, final Date date2, final int field)
              /**
               * 截取比較兩個(gè)日歷對象的field處的值 。
               * 如果第一個(gè)日歷小于、等于、大于第二個(gè),則對應返回負整數、0、正整數
               * 
               * @param cal1 第一個(gè)日歷對象,非null
               * @param cal2 第二個(gè)日歷對象,非null
               * @param field Calendar中的閾值
               */
              public static int truncatedCompareTo(final Calendar cal1, final Calendar cal2, final int field)
              /**
               * 截取比較斷兩個(gè)日期對象的field處的值 。
               * 如果第一個(gè)日期小于、等于、大于第二個(gè),則對應返回負整數、0、正整數
               * 
               * @param date1 第一個(gè)日期對象,非null
               * @param date2 第二個(gè)日期對象,非null
               * @param field Calendar中的閾值
               */
              public static int truncatedCompareTo(final Date date1, final Date date2, final int field)
          	
          	
          	//簡(jiǎn)單舉例
          	System.out.println(DateUtils.addDays(new Date(), 1));//-----------------當前日期。天數加1如果想建議填負數即可
              System.out.println(DateUtils.addHours(new Date(), 0));//----------------當前日期
              Date date = DateUtils.addDays(new Date(), 1);
          

          DateUtils返回的就是Date不需要轉換,當然也是很早的東西了,只是誕生在Calender基礎之上而已

          三、JDK1.8新增的日期A(yíng)PI LocalDate | LocalTime | LocalDateTime

          新的日期A(yíng)PI都是不可變的,更使用于多線(xiàn)程的使用環(huán)境中(從默認時(shí)區的系統時(shí)鐘獲取當前的日期時(shí)間。不用考慮時(shí)區差)
          優(yōu)點(diǎn):

          1、之前使用的java.util.Date月份從0開(kāi)始,我們一般會(huì )+1使用,很不方便,java.time.LocalDate月份和星期都改成了enum

          2、java.util.Date和SimpleDateFormat都不是線(xiàn)程安全的,而LocalDate和LocalTime和最基本的String一樣,是不變類(lèi)型,不但線(xiàn)程安全,而且不能修改。

          3、java.util.Date是一個(gè)“萬(wàn)能接口”,它包含日期、時(shí)間,還有毫秒數,更加明確需求取舍

          4、新接口更好用的原因是考慮到了日期時(shí)間的操作,經(jīng)常發(fā)生往前推或往后推幾天的情況。用java.util.Date配合Calendar要寫(xiě)好多代碼,而且一般的開(kāi)發(fā)人員還不一定能寫(xiě)對。

          (1)、LocalDateTime(年月日時(shí)分秒)

          LocalDateTime date = LocalDateTime.now();
                  //2021-03-26T10:24:14.009784900
                  System.out.println(date);
          
          		//獲取年月日時(shí)分秒操作
                  System.out.println(date.getYear());
                  System.out.println(date.getMonthValue());
                  System.out.println(date.getDayOfMonth());
                  System.out.println(date.getHour());
                  System.out.println(date.getMinute());
                  System.out.println(date.getSecond());
                  System.out.println(date.getNano());
          		
          		//當然你也可以獲取最近任意的一段時(shí)間
          		 System.out.println(date.getSecond()+1);           ||        System.out.println(date.getSecond()-1);
          		
          
                  // 手動(dòng)創(chuàng  )建一個(gè)LocalDateTime實(shí)例
                  LocalDateTime date2 = LocalDateTime.of(2017, 12, 17, 9, 31, 31, 31);
                  System.out.println(date2);
                  // 進(jìn)行加操作,得到新的日期實(shí)例
                  LocalDateTime date3 = date2.plusDays(12);
                  System.out.println(date3);
                  // 進(jìn)行減操作,得到新的日期實(shí)例
                  LocalDateTime date4 = date3.minusYears(2);
                  System.out.println(date4);
          		
          		isAfter()判斷一個(gè)日期是否在指定日期之后  返回boolean 類(lèi)型
          		System.out.println(localDateTime.isBefore(LocalDateTime.now()));//---------返回false
          		
          		isBefore()判斷一個(gè)日期是否在指定日期之前   返回boolean 類(lèi)型
          		System.out.println(localDateTime.isAfter(LocalDateTime.now()));//---------返回false
          	
          		isLeapYear()判斷是否是閏年(這個(gè)是LocalDate類(lèi)中的方法)  返回boolean類(lèi)型
          		System.out.println(localDateTime.isEqual(LocalDateTime.now()));//---------返回true
          

          (2)、LocalDateTime與Date之間的轉換

          Date to LocalDateTime

          Date todayDate = new Date();
          
          LocalDateTime ldt = Instant.ofEpochMilli( todayDate.getTime() )
                  .atZone( ZoneId.systemDefault() )
                  .toLocalDateTime();
          
          System.out.println(ldt);
          

          LocalDateTime to Date

          LocalDateTime localDateTime = LocalDateTime.now();
          
          Date date = Date.from( localDateTime.atZone( ZoneId.systemDefault()).toInstant());
          
          System.out.println(date);
          

          當然還有很多好玩的東西,LocalDate(年月日) LocalTime(時(shí)分秒)和LocalDateTime(年月日時(shí)分秒)都大差不差,所以講一個(gè)即可

          四、Hutool(Java工具類(lèi)庫)

          一個(gè)比較好玩的Java工具類(lèi)庫,包含很多好玩的工具類(lèi),簡(jiǎn)單便捷。

          (1)、安裝

          Maven

          <dependency>
              <groupId>cn.hutool</groupId>
              <artifactId>hutool-all</artifactId>
              <version>5.6.1</version>
          </dependency>
          

          Gradle

          compile 'cn.hutool:hutool-all:5.6.1'

          Maven中央倉庫
          Hutool 5.x支持JDK8+,對Android平臺沒(méi)有測試,不能保證所有工具類(lèi)或工具方法可用。 如果你的項目使用JDK7,請使用Hutool 4.x版本

          (2)、使用

          	//該工具類(lèi)時(shí)間都是格式化好的
          	System.out.println(DateUtil.now());//------------------------------取當前時(shí)間
          	
          	這也沒(méi)啥好說(shuō)的下載源碼看中文注釋即可,就不一一舉例了,,,簡(jiǎn)簡(jiǎn)單單。
          

          總結

          總之好玩的工具類(lèi)一大坨,不管是jdk原生還是別人封裝的工具類(lèi),如果你想也可以自己通過(guò)jdk1.8的日期api自己封裝屬于自己的日期工具類(lèi),網(wǎng)上的日期工具類(lèi)太多了,不要重復造輪子~~~~~~~~~~今天也是元氣滿(mǎn)滿(mǎn)的一天

          以上就是Java 進(jìn)行時(shí)間處理的步驟的詳細內容,更多關(guān)于Java 時(shí)間處理的資料請關(guān)注腳本之家其它相關(guān)文章!

          免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

          久久人人妻人人做人人爽| 蜜桃一区二区三区| 国产杨幂AV在线播放| 色妞WWW精品视频| 超caopor在线公开视频| 国产在线精品一区二区不卡|