Java 語言的Date(日期),Calendar(日曆),DateFormat(日期格式)組成了Java標準的一個基本可是很是重要的部分。日期是商業邏輯計算一個關鍵的部分,全部的開發者都應該可以計算將來的日期,定製日期的顯示格式,並將文本數據解析成日期對象。
建立一個日期對象 java
讓咱們看一個使用系統的當前日期和時間建立一個日期對象並返回一個長整數,這個時間一般被稱爲Java 虛擬機(JVM)主機環境的系統時間。app
import java.util.Date; public class DateTest { public static void main(String[] args) { Date date = new Date(); System.out.println(date); // Fri Mar 02 22:38:41 CST 2012 System.out.println(date.getTime()); // 1330699121772 } }
在星期五,2012年3月2日,下午大約是22:38:41的樣子,上面的例子在系統輸出設備上顯示的結果是 1330699121772。值得注意的是咱們使用了Date 構造函數建立一個日期對象,這個構造函數沒有接受任何參數,而這個構造函數在內部使用了System.currentTimeMillis() 方法來從系統獲取日期。如今咱們已經知道了如何獲取從1970年1月1日開始經歷的毫秒數了。咱們如何才能以一種用戶明白的格式來顯示這個日期呢? 在這裏類java.text.SimpleDateFormat 和它的抽象基類 java.text.DateFormat 就派得上用場了。
日期數據的定製格式 函數
假如咱們但願定製日期數據的格式,比方星期五-3月-02日-2012年. 下面的例子展現瞭如何完成這個工做: ui
import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy"); System.out.println(dateFormat.format(date)); // Friday-March-02-2012 } }
只要經過向SimpleDateFormat 的構造函數傳遞格式字符串"EEE-MMMM-dd-yyyy",咱們就可以指明本身想要的格式。格式字符串中的ASCII 字符告訴格式化函數下面顯示日期數據的哪個部分。EEEE是星期,MMMM是月,dd是日,yyyy是年,字符的個數決定了日期是如何格式化的。傳遞"EE-MM-dd-yy"會顯示Friday-March-02-2012。
將文本數據解析成日期對象 this
假設咱們有一個文本字符串包含了一個格式化了的日期對象,咱們但願解析這個字符串並從文本日期數據建立一個日期對象。咱們將再次以格式化字符串"MM-dd-yyyy" 調用SimpleDateFormat類。可是這一次,咱們使用格式化解析而不是生成一個文本日期數據。咱們的例子顯示在下面,將解析文本字符串"3-02-2012"並建立一個值爲1330617600000 的日期對象。spa
import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) { SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy"); String txtDate = "3-02-2012"; try { Date date = dateFormat.parse(txtDate); System.out.println(date.getTime()); // 1330617600000 System.out.println(dateFormat.format(date)); // 03-02-2012 } catch (Exception e) { System.out.println(e.getMessage()); } } }
使用標準的日期格式化過程 code
既然咱們已經能夠生成和解析定製的日期格式了,讓咱們來看一看如何使用內建的格式化過程。方法 DateFormat.getDateTimeInstance() 讓咱們得以用幾種不一樣的方法得到標準的日期格式化過程。下面是咱們獲取了六個內建的日期格式化過程。它們包括一個空,默認,短的,中等的,長的,完整的日期格式。 orm
import java.text.DateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) { String strDate = null; Date date = new Date(); System.out.println(date); // Fri Mar 02 21:43:55 CST 2012 strDate = DateFormat.getDateInstance().format(date); System.out.println(strDate); // Mar 2, 2012 // Date strDate = DateFormat.getDateInstance(DateFormat.DEFAULT).format(date); System.out.println(strDate); // Mar 2, 2012 strDate = DateFormat.getDateInstance(DateFormat.SHORT).format(date); System.out.println(strDate); // 3/2/12 strDate = DateFormat.getDateInstance(DateFormat.MEDIUM).format(date); System.out.println(strDate); // Mar 2, 2012 strDate = DateFormat.getDateInstance(DateFormat.LONG).format(date); System.out.println(strDate); // March 2, 2012 strDate = DateFormat.getDateInstance(DateFormat.FULL).format(date); System.out.println(strDate); // Friday, March 2, 2012 // DateTime strDate = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT).format(date); System.out.println(strDate); // Mar 2, 2012 11:06:36 PM strDate = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date); System.out.println(strDate); // 3/2/12 11:06 PM strDate = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(date); System.out.println(strDate); // Mar 2, 2012 11:06:36 PM strDate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(date); System.out.println(strDate); // March 2, 2012 11:06:36 PM CST strDate = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(date); System.out.println(strDate); // Friday, March 2, 2012 11:06:36 PM CST } }
運行結果:
Fri Mar 02 23:06:36 CST 2012
Mar 2, 2012
Mar 2, 2012 11:06:36 PM
3/2/12 11:06 PM
Mar 2, 2012 11:06:36 PM
March 2, 2012 11:06:36 PM CST
Friday, March 2, 2012 11:06:36 PM CST
Mar 2, 2012
3/2/12
Mar 2, 2012
March 2, 2012
Friday, March 2, 2012對象
注意咱們在對 getDateTimeInstance的每次調用中都傳遞了兩個值:第一個參數是日期風格,而第二個參數是時間風格。它們都是基本數據類型int(整型)。考慮到可讀性,咱們使用了DateFormat 類提供的常量: DEFAULT,SHORT,MEDIUM,LONG, FULL。
blog
Calendar 類
咱們如今已經可以格式化並建立一個日期對象了,可是咱們如何才能設置和獲取日期數據的特定部分呢,好比說小時,日,分鐘? 咱們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類。
假設你想要設置,獲取,操縱一個日期對象的各個部分,比方一個月的一天或者是一個星期的一天,爲了演示這個過程,咱們將使用具體的子類 java.util.GregorianCalendar。 考慮下面的例子,它計算獲得下面的第十個星期五是13號。
import java.text.DateFormat; import java.util.Date; import java.util.GregorianCalendar; public class CalendarTest { public static void main(String[] args) { Date date = new Date(); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(date); System.out.println("System Date: " + calendar.getTime()); calendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY); System.out.println("Day of Week to Friday: \n" + dateFormat.format(calendar.getTime())); int friday13Counter = 0; while(friday13Counter <= 10) { calendar.add(GregorianCalendar.DAY_OF_MONTH, 7); if(calendar.get(GregorianCalendar.DAY_OF_MONTH) == 13) { friday13Counter++; System.out.println(dateFormat.format(calendar.getTime())); } } } }
運行結果:
System Date: Fri Mar 02 23:37:01 CST 2012
Day of Week to Friday:
Friday, March 2, 2012
Friday, April 13, 2012
Friday, July 13, 2012
Friday, September 13, 2013
Friday, December 13, 2013
Friday, June 13, 2014
Friday, February 13, 2015
Friday, March 13, 2015
Friday, November 13, 2015
Friday, May 13, 2016
Friday, January 13, 2017
Friday, October 13, 2017
在這個例子中咱們做了有趣的函數調用:
calendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY) 和 calendar.add(GregorianCalendar.DAY_OF_MONTH, 7)
set 方法可以讓咱們經過簡單的設置星期中的哪一天這個域來將咱們的時間調整爲星期五。注意到這裏咱們使用了常量 DAY_OF_WEEK 和 FRIDAY來加強代碼的可讀性。
add 方法讓咱們可以在日期上加上數值,潤年的全部複雜的計算都由這個方法自動處理。
咱們這個例子的輸出結果是:
System Date: Fri Mar 02 23:33:19 CST 2012
當咱們將它設置成星期五之後就成了:
Day of Week to Friday:
Friday, March 2, 2012
Friday, April 13, 2012
Friday, July 13, 2012
Friday, September 13, 2013
Friday, December 13, 2013
Friday, June 13, 2014
Friday, February 13, 2015
Friday, March 13, 2015
Friday, November 13, 2015
Friday, May 13, 2016
Friday, January 13, 2017
Friday, October 13, 2017
時間掌握在你的手裏
package com.homer.learn; import java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class TimeTest { public static void main(String[] args) { TimeTest tt = new TimeTest(); System.out.println("\n當前日期: "); System.out.println(tt.getNowTime()); // 獲取當前時間 System.out.println(tt.getNowTime2()); // 獲取當前時間 System.out.println(tt.getNowTime3()); // 獲取當前時間 System.out.println("\n計算周: "); System.out.println(tt.getDaysOfNow2SundayInWeek()); // 獲取當前日期與本週日的相差天數 System.out.println(tt.getDateOfMondayInWeek()); // 獲取本週一的日期 System.out.println(tt.getDateOfSaturdayInWeek()); // 獲取本週六的日期 System.out.println(tt.getDateOfSaturdayInNextWeek()); // 獲取下週一的日期 System.out.println(tt.getDateOfSaturdayInLastWeek()); // 獲取上週一的日期 System.out.println("\n計算月: "); System.out.println(tt.getFirstDayOfMonth()); // 獲取當月的第一天 System.out.println(tt.getLastDayOfMonth()); // 獲取當月最後一天 System.out.println(tt.getFirstDayOfPreviousMonth()); // 獲取上月第一天 System.out.println(tt.getLastDayOfPreviousMonth()); // 獲取上月最後一天 System.out.println(tt.getFirstDayOfNextMonth()); // 獲取下月第一天 System.out.println(tt.getLastDayOfNextMonth()); // 獲取下月最後一天 System.out.println("\n計算年: "); System.out.println(tt.getFirstDayOfYear()); // 獲取本年的第一天 System.out.println(tt.getLastDayOfYear()); // 獲取本年最後一天 System.out.println(tt.getFirstDayOfPreviousYear()); // 獲取上年的第一天 System.out.println(tt.getLastDayOfPreviousYear()); // 獲取上年最後一天 System.out.println(tt.getFirstDayOfNextYear()); // 獲取下年的第一天 System.out.println(tt.getLastDayOfNextYear()); // 獲取下年最後一天 System.out.println(tt.getDaysOfYear()); // 獲取本年的天數 System.out.println("\n計算季度: "); System.out.println(tt.getSeasonOfMonth()); // 獲取當前月的季度 System.out.println(tt.getLastDayOfNow()); // 獲取當前天所在月份的天數 System.out.println(tt.isLeapYear(2012)); // 判斷是不是潤年 System.out.println("\n日期格式轉換與計算: "); System.out.println(tt.getDateFromStr("2012-06-20")); // 將字符串時間格式 yyyy-MM-dd,轉換成Date類型 System.out.println(tt.getWeek("2012-06-20")); // 根據一個日期,返回是星期幾的字符串 System.out.print("2012-06-02 -> 2012-06-12間隔天數:"); // 計算兩個日期間的間隔天數 System.out.println(tt.getDaysFromTwoDate("2012-06-02", "2012-06-12")); } // 獲取當前時間 public String getNowTime() { SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date now = new Date(); return sDateFormat.format(now); } public String getNowTime2() { SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date now = new Date(System.currentTimeMillis()); return sDateFormat.format(now); } public String getNowTime3() { StringBuilder strBuildNow = new StringBuilder(); Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); int millissecond = calendar.get(Calendar.MILLISECOND); strBuildNow.append(year + "-"); strBuildNow.append(month + "-"); strBuildNow.append(day + " "); strBuildNow.append(hour + ":"); strBuildNow.append(minute + ":"); strBuildNow.append(second + "."); strBuildNow.append(millissecond); return strBuildNow.toString(); } // 獲取當前日期與本週日的相差天數 public int getDaysOfNow2SundayInWeek() { Calendar calendar = Calendar.getInstance(); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 減一天,週一爲1,符合中國人習慣。Sunday - 1; Monday - 2; Saturday - 7 if(dayOfWeek == 0) { // 週日 return 0; } else { return 0 - dayOfWeek; } } // 獲取本週一的日期 public String getDateOfMondayInWeek(){ int day = this.getDaysOfNow2SundayInWeek() + 1; // 加1,即週一離本週日的間隔天數 GregorianCalendar gCalendar = new GregorianCalendar(); gCalendar.add(GregorianCalendar.DATE, day); // 計算與本週一相差的時間間隔 Date curDay = gCalendar.getTime(); DateFormat dateFormat = DateFormat.getInstance(); String dateOfMonday = dateFormat.format(curDay); return dateOfMonday; } // 獲取本週六的日期 public String getDateOfSaturdayInWeek(){ int day = this.getDaysOfNow2SundayInWeek() + 6; // 加6,即週六離本週日的間隔天數 GregorianCalendar gCalendar = new GregorianCalendar(); gCalendar.add(GregorianCalendar.DATE, day); // 計算與本週六相差的時間間隔 Date curDay = gCalendar.getTime(); DateFormat dateFormat = DateFormat.getInstance(); String dateOfMonday = dateFormat.format(curDay); return dateOfMonday; } // 獲取上週一的日期 public String getDateOfSaturdayInLastWeek(){ int day = this.getDaysOfNow2SundayInWeek() - 1; // 減1,即上週一離本週日的間隔天數 GregorianCalendar gCalendar = new GregorianCalendar(); gCalendar.add(GregorianCalendar.DATE, day); // 計算與上週一相差的時間間隔 Date curDay = gCalendar.getTime(); DateFormat dateFormat = DateFormat.getInstance(); String dateOfMonday = dateFormat.format(curDay); return dateOfMonday; } // 獲取下週一的日期 public String getDateOfSaturdayInNextWeek(){ int day = this.getDaysOfNow2SundayInWeek() + 8; // 加8,即下週一離本週日的間隔天數 GregorianCalendar gCalendar = new GregorianCalendar(); gCalendar.add(GregorianCalendar.DATE, day); // 計算與下週一相差的時間間隔 Date curDay = gCalendar.getTime(); DateFormat dateFormat = DateFormat.getInstance(); String dateOfMonday = dateFormat.format(curDay); return dateOfMonday; } // 獲取當月第一天 public String getFirstDayOfMonth() { String strFirstDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 1); // 設置當前月的1號 strFirstDay = sDateFormat.format(calendar.getTime()); return strFirstDay; } // 獲取當月最後一天 public String getLastDayOfMonth() { String strLastDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 1); // 設置當前月的1號 calendar.add(Calendar.MONDAY, 1); // 加一個月,變爲下月的1號 calendar.add(Calendar.DATE, -1); // 減去一天,變爲當前月的最後一天 strLastDay = sDateFormat.format(calendar.getTime()); return strLastDay; } // 獲取上月第一天 public String getFirstDayOfPreviousMonth() { String strFirstDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 1); // 設置當前月的1號 calendar.add(Calendar.MONDAY, -1); // 減一個月,變爲上月的1號 strFirstDay = sDateFormat.format(calendar.getTime()); return strFirstDay; } // 獲取上月最後一天 public String getLastDayOfPreviousMonth() { String strLastDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 1); // 設置當前月的1號 calendar.add(Calendar.DATE, -1); // 減一天,變爲上月的1號 strLastDay = sDateFormat.format(calendar.getTime()); return strLastDay; } public String getLastDayOfPreviousMonth2() { String strLastDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONDAY, -1); // 減一個月 calendar.set(Calendar.DATE, 1); // 設置當前月的1號 calendar.roll(Calendar.DATE, -1); // 把日期回滾一天,也就是本月最後一天 strLastDay = sDateFormat.format(calendar.getTime()); return strLastDay; } // 獲取下月第一天 public String getFirstDayOfNextMonth() { String strFirstDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 1); // 加一個月 calendar.set(Calendar.DATE, 1); // 設置當前月第一天 strFirstDay = sDateFormat.format(calendar.getTime()); return strFirstDay; } // 獲取下月最後一天 public String getLastDayOfNextMonth() { String strLastDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 1); // 設置當前月的1號 calendar.add(Calendar.MONDAY, 2); // 加兩個月,變爲下下月的1號 calendar.add(Calendar.DATE, -1); // 減一天,變爲下月的最後一天 strLastDay = sDateFormat.format(calendar.getTime()); return strLastDay; } public String getLastDayOfNextMonth2(){ String strLastDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 1); // 加1個月 calendar.set(Calendar.DATE, 1); // 把日期設置爲當月第1天 calendar.roll(Calendar.DATE, -1); // 日期回滾1天,也就是本月最後1天 strLastDay = sDateFormat.format(calendar.getTime()); return strLastDay; } // 獲取本年的第一天 public String getFirstDayOfYear(){ String strFirstDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_YEAR, 1); // 設置當年第一天 strFirstDay = sDateFormat.format(calendar.getTime()); return strFirstDay; } // 獲取本年的最後一天 public String getLastDayOfYear(){ String strLastDay = ""; Calendar calendar = Calendar.getInstance(); strLastDay = calendar.get(Calendar.YEAR) + "-12-31"; return strLastDay; } // 獲取上年的第一天 public String getFirstDayOfPreviousYear(){ String strFirstDay = ""; Calendar calendar = Calendar.getInstance(); strFirstDay = (calendar.get(Calendar.YEAR) - 1) + "-01-01"; return strFirstDay; } // 獲取上年的最後一天 public String getLastDayOfPreviousYear(){ String strLastDay = ""; Calendar calendar = Calendar.getInstance(); strLastDay = (calendar.get(Calendar.YEAR) - 1) + "-12-31"; return strLastDay; } // 獲取下年的第一天 public String getFirstDayOfNextYear(){ String strFirstDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 1); // 加一年 calendar.set(Calendar.DAY_OF_YEAR, 1); // 設置當年第一天 strFirstDay = sDateFormat.format(calendar.getTime()); return strFirstDay; } // 獲取下年的最後一天 public String getLastDayOfNextYear(){ String strLastDay = ""; SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 1); // 加一年 calendar.set(Calendar.DAY_OF_YEAR, 1); // 設置當年第一天 calendar.roll(Calendar.DAY_OF_YEAR, -1); // 回滾到當年最後一天 strLastDay = sDateFormat.format(calendar.getTime()); return strLastDay; } // 獲取本年的天數 public String getDaysOfYear(){ int year = 0; int days = 0; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_YEAR, 1); // 設置日期爲當年第一天 calendar.roll(Calendar.DAY_OF_YEAR, -1); // 把日期回滾一天 year = calendar.get(Calendar.YEAR); days = calendar.get(Calendar.DAY_OF_YEAR); return (days + " in " + year); } // 獲取當前月的季度 public String getSeasonOfMonth(){ String strSeason = ""; int year, month, day; int season = 1; int array[][] = new int[][]{ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} }; Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONDAY) + 1; day = calendar.get(Calendar.DAY_OF_MONTH); switch (month) { case 1: case 2: case 3: season = 1; break; case 4: case 5: case 6: season = 2; break; case 7: case 8: case 9: season = 3; break; case 10: case 11: case 12: season = 4; break; default: season = 1; break; } int start_month = array[season-1][0]; int end_month = array[season-1][2]; strSeason = year + "-" + month + "-" +day; strSeason += " in [ " + year + "-" + start_month + " : " + year + "-" + end_month + " ]"; return strSeason; } // 獲取當前天所在月份的天數 public String getLastDayOfNow(){ String strLastDay = ""; int year, month, day; int days = 0; Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH) + 1; day = calendar.get(Calendar.DAY_OF_MONTH); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if (isLeapYear(year)) { days = 29; } else { days = 28; } break; default: days = 0; break; } strLastDay = days + " in [ " + year + "-" + month + "-" + day + " ]"; return strLastDay; } // 判斷是不是潤年 public boolean isLeapYear(int year){ return (year%4 == 0 && year%100 != 0) || (year%400 == 0); } // 將字符串時間格式 yyyy-MM-dd,轉換成Date類型 public Date getDateFromStr(String txtDate) { SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); ParsePosition pos = new ParsePosition(0); Date date = sDateFormat.parse(txtDate, pos); return date; } // 根據一個日期,返回是星期幾的字符串 public String getWeek(String txtDate) { Date date = getDateFromStr(txtDate); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); String week = new SimpleDateFormat("EEEE").format(date); return week; } // 計算兩個日期間的間隔天數 public long getDaysFromTwoDate(String txtDate1, String txtDate2) { if(txtDate1 == null || txtDate1.equals("")) { return 0; } if(txtDate2 == null || txtDate2.equals("")) { return 0; } SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd"); long days = 0; try { Date date1 = sDateFormat.parse(txtDate1); Date date2 = sDateFormat.parse(txtDate2); days = (date2.getTime() - date1.getTime())/(24*60*60*1000); // 經過getTime()方法,把時間Date轉換成毫秒格式Long類型,進行計算 } catch (Exception e) { System.out.println(e.getMessage()); } return days; } }
運行結果:
當前日期: 2012-03-072012-03-07 12:30:112012-3-7 12:30:11.101計算周: -33/5/12 12:30 PM3/10/12 12:30 PM3/12/12 12:30 PM3/3/12 12:30 PM計算月: 2012-03-012012-03-312012-02-012012-02-292012-04-012012-04-30計算年: 2012-01-012012-12-312011-01-012011-12-312013-01-012013-12-31366 in 2012計算季度: 2012-3-7 in [ 2012-1 : 2012-3 ]31 in [ 2012-3-7 ]true日期格式轉換與計算: Wed Jun 20 00:00:00 CST 2012Wednesday2012-06-02 -> 2012-06-12間隔天數:10