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...

38,518 Responses

  1. Aaronbus表示:

    garuda888.top garuda888 Keseruan bermain slot selalu menggoda para pemain

  2. ThomasThype表示:

    Beberapa kasino memiliki area khusus untuk slot: slot demo gratis – slot demo pg gratis

  3. JamesLok表示:

    п»їKasino di Indonesia sangat populer di kalangan wisatawan http://bonaslot.site/# Jackpot besar bisa mengubah hidup seseorang

  4. JamesLok表示:

    Kasino selalu memperbarui mesin slotnya http://garuda888.top/# Slot dengan grafis 3D sangat mengesankan

  5. Williecrady表示:

    Beberapa kasino memiliki area khusus untuk slot https://slot88.company/# Banyak pemain menikmati jackpot harian di slot

  6. DavidCooth表示:

    https://slot88.company/# Kasino menyediakan layanan pelanggan yang baik

  7. DefiLlama表示:

    I have really noticed that credit improvement activity should be conducted with techniques. If not, it’s possible you’ll find yourself destroying your standing. In order to realize your aspirations in fixing your credit history you have to always make sure that from this instant you pay all your monthly expenses promptly in advance of their appointed date. It really is significant for the reason that by not accomplishing this, all other actions that you will decide to use to improve your credit positioning will not be efficient. Thanks for expressing your tips.

  8. DavidCooth表示:

    http://slot88.company/# Banyak pemain berusaha untuk mendapatkan jackpot

  9. Aaronbus表示:

    slot demo slot demo Slot dengan bonus putaran gratis sangat populer

  10. ThomasThype表示:

    Kasino memiliki suasana yang energik dan menyenangkan: slot demo – slot demo

  11. JamesLok表示:

    Permainan slot mudah dipahami dan menyenangkan http://slot88.company/# Slot dengan fitur interaktif semakin banyak tersedia

  12. As I web site possessor I believe the content material here is rattling magnificent , appreciate it for your efforts. You should keep it up forever! Best of luck.

  13. ThomasThype表示:

    Pemain sering berbagi tips untuk menang: BonaSlot – bonaslot

  14. ThomasThype表示:

    Pemain sering berbagi tips untuk menang: garuda888.top – garuda888 slot

  15. JamesLok表示:

    Banyak pemain menikmati bermain slot secara online http://preman69.tech/# Slot memberikan kesempatan untuk menang besar

  16. Williecrady表示:

    Slot dengan pembayaran tinggi selalu diminati http://bonaslot.site/# Permainan slot mudah dipahami dan menyenangkan

  17. Williecrady表示:

    Slot menjadi daya tarik utama di kasino https://preman69.tech/# Jackpot besar bisa mengubah hidup seseorang

  18. Williecrady表示:

    Mesin slot dapat dimainkan dalam berbagai bahasa http://bonaslot.site/# Banyak kasino memiliki program loyalitas untuk pemain

  19. JamesLok表示:

    Slot dengan fitur interaktif semakin banyak tersedia https://preman69.tech/# Keseruan bermain slot selalu menggoda para pemain

  20. DavidCooth表示:

    https://slotdemo.auction/# Kasino selalu memperbarui mesin slotnya

  21. DavidCooth表示:

    http://bonaslot.site/# Pemain harus menetapkan batas saat bermain

  22. I used to be suggested this blog by means of my cousin. I am no longer sure whether this put up is written by way of him as nobody else know such targeted about my trouble. You are wonderful! Thank you!

  23. ThomasThype表示:

    п»їKasino di Indonesia sangat populer di kalangan wisatawan: garuda888.top – garuda888 slot

  24. JamesLok表示:

    Kasino menyediakan layanan pelanggan yang baik https://bonaslot.site/# Banyak pemain berusaha untuk mendapatkan jackpot

  25. Williecrady表示:

    Slot dengan tema film terkenal menarik banyak perhatian https://slotdemo.auction/# Kasino memiliki suasana yang energik dan menyenangkan

  26. JamesLok表示:

    Slot menawarkan berbagai jenis permainan bonus https://bonaslot.site/# Slot klasik tetap menjadi favorit banyak orang

  27. ThomasThype表示:

    Banyak pemain mencari mesin dengan RTP tinggi: slot demo gratis – slotdemo

  28. DavidCooth表示:

    https://slot88.company/# Pemain harus menetapkan batas saat bermain

  29. DavidCooth表示:

    http://slot88.company/# Kasino menyediakan layanan pelanggan yang baik

發佈留言

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