Java 各種時間上的操作範例

分享一些在專案中用到JAVA與日期相關的操作,包括:

  • 取得目前的年、月、日
  • 判斷兩個日期的大小
  • 計算兩個日期的差距
  • 取得昨天的日期
  • 取得上個月的開始與結束日
package CDIT.stanley;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Calendar;

public class dateOperation {
	
	public static int differentDays(Date date1,Date date2){
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
        int day1= cal1.get(Calendar.DAY_OF_YEAR);
        int day2 = cal2.get(Calendar.DAY_OF_YEAR);
        
        int year1 = cal1.get(Calendar.YEAR);
        int year2 = cal2.get(Calendar.YEAR);
        if(year1 != year2){
            int timeDistance = 0 ;
            for(int i = year1 ; i < year2 ; i ++){
                if(i%4==0 && i%100!=0 || i%400==0){
                    timeDistance += 366;
                }
                else{
                    timeDistance += 365;
                }
            }
            return timeDistance + (day2-day1) ;
        }
        else{
            return day2-day1;
        }
    }
	
	public static Date getFirstMonthDay(Calendar calendar) {
		calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));
		return calendar.getTime();
	}

	public static Date getLastMonthDay(Calendar calendar) {
		calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
		return calendar.getTime();
	}
	
    public static void main(String[] args) throws ParseException {
    	
    	//取得目前的年、月、日
		Calendar calendar = Calendar.getInstance();	
		System.out.println("今天是" + calendar.get(Calendar.YEAR) + "年" + (calendar.get(Calendar.MONTH) + 1) + "月" + calendar.get(Calendar.DAY_OF_MONTH) + "日");
		System.out.println("==================================================");
    	//輸出:今天是2017年8月24日
		
		//判斷兩個日期的大小
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.TAIWAN);
    	Date date1 = sdf.parse("2017-08-23");
    	Date date2 = sdf.parse("2016-09-22");
		System.out.println("Date1 < Date2 : " + date1.before(date2));
		System.out.println("Date1 > Date2 : " + date1.after(date2));
		System.out.println("==================================================");
		//輸出:Date1 < Date2 : false、Date1 > Date2 : true
		
		//計算兩個日期的差距
		System.out.println("Date1 & Date2 差距 : " + differentDays(date1 , date2) + "天");
		System.out.println("==================================================");
		//輸出:Date1 & Date2 差距 : 31天
		
		//取得昨天的日期
		calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -1);
		String  yestedayDate = sdf.format(calendar.getTime());
		System.out.println("昨天是" + yestedayDate);
		System.out.println("==================================================");
		//輸出:昨天是2017-08-23
		
		//取得上個月的開始與結束日
		calendar = Calendar.getInstance();
		calendar.add(Calendar.MONTH,-1);
		String monthDayFirst = sdf.format(getFirstMonthDay(calendar));
		String monthDayLast = sdf.format(getLastMonthDay(calendar));
		System.out.println("上個月的第一天是" + monthDayFirst);
		System.out.println("上個月的最後一天是" + monthDayLast);
		System.out.println("==================================================");
		//輸出:上個月的第一天是2017-07-01、上個月的最後一天是2017-07-31
    }
}

You may also like...

27,924 Responses

  1. Briantrozy表示:

    zithromax 250 mg australia: zithromax online paypal – zithromax

  2. My spouse and I absolutely love your blog and find the majority of your post’s to be just what I’m looking for. Do you offer guest writers to write content in your case? I wouldn’t mind writing a post or elaborating on some of the subjects you write regarding here. Again, awesome site!

  3. Briantrozy表示:

    zithromax 250 mg: zithromax online australia – generic zithromax 500mg india

  4. Great blog post. The things i would like to bring up is that personal computer memory ought to be purchased but if your computer can no longer cope with anything you do along with it. One can install two random access memory boards with 1GB each, as an example, but not certainly one of 1GB and one having 2GB. One should check the car maker’s documentation for own PC to make sure what type of memory space is needed.

  5. Roberttic表示:

    https://doxhealthpharm.com/# doxycycline generic

  6. Richardfloda表示:

    Наша Москва – ДТП и ЧП Москва, Моя Москва

  7. Briantrozy表示:

    azithromycin doxycycline: DoxHealthPharm – doxycycline 300 mg tablet

  8. We stumbled over here different web page and thought I should check things out. I like what I see so i am just following you. Look forward to looking at your web page for a second time.

  9. BrandonJag表示:

    can you get clomid price: where to buy cheap clomid pill – can i buy cheap clomid price

  10. JustinTam表示:

    doxycycline cheap uk: buy doxycycline 100mg – doxycycline online sale

  11. We are a group of volunteers and opening a new scheme in our community. Your website provided us with valuable info to work on. You have done a formidable job and our whole community will be grateful to you.

  12. VirgilBlawl表示:

    doxycycline pills over the counter doxycycline 50 mg buy uk doxycycline 100mg tablets nz

  13. JustinTam表示:

    can i order clomid: ClmHealthPharm – how can i get clomid without a prescription

  14. BrandonJag表示:

    zithromax online no prescription: ZithroPharm – buy zithromax online

  15. Roberttic表示:

    http://amohealthpharm.com/# canadian pharmacy amoxicillin

  16. I would like to thnkx for the efforts you’ve put in writing this site. I’m hoping the same high-grade website post from you in the upcoming as well. In fact your creative writing skills has encouraged me to get my own blog now. Really the blogging is spreading its wings rapidly. Your write up is a great example of it.

  17. Roberttic表示:

    https://zithropharm.com/# buy azithromycin zithromax

  18. JustinTam表示:

    amoxicillin capsule 500mg price: Amo Health Pharm – buying amoxicillin in mexico

  19. MbikolkolTef表示:

    Utiliza el codigo de bonificacion de 1xCasino: “1XBUM” para obtener un bono VIP de hasta €1950 mas 150 giros gratis en el casino y un 200% hasta €130 en apuestas deportivas. Introduce nuestro codigo promocional para 1x Casino 2025 en el formulario de registro y reclama bonos exclusivos para el casino y las apuestas deportivas. Bonificacion sin deposito de 1xCasino de $2420. Es necesario registrarse, confirmar tu correo electronico e ingresar el codigo promocional.

    codigo promocional 1xCasino venezuela

  20. VirgilBlawl表示:

    antibiotic amoxicillin cost of amoxicillin 30 capsules amoxicillin without a prescription

  21. JustinTam表示:

    zithromax capsules australia: Zithro Pharm – zithromax for sale usa

  22. JustinTam表示:

    can i order generic clomid online: ClmHealthPharm – order clomid pills

  23. Briantrozy表示:

    how can i get doxycycline over the counter: where can i buy doxycycline over the counter – doxycycline 300 mg daily

  24. VirgilBlawl表示:

    get generic clomid no prescription ClmHealthPharm how to get cheap clomid online

  25. A second, more broadly based CPI for All City Shoppers, the CPI-U was additionally introduced.

  26. BrandonJag表示:

    generic amoxicillin over the counter: Amo Health Pharm – amoxicillin 500mg capsule buy online

  27. BrandonJag表示:

    doxycycline 100mg coupon: DoxHealthPharm – doxycycline 100mg capsules price in india

  28. Roberttic表示:

    http://zithropharm.com/# zithromax cost

  29. Roberttic表示:

    https://doxhealthpharm.com/# doxycycline brand

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。