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,522 Responses

  1. DavidCooth表示:

    https://slotdemo.auction/# Kasino di Jakarta memiliki berbagai pilihan permainan

  2. ThomasThype表示:

    Kasino memastikan keamanan para pemain dengan baik: garuda888 – garuda888

  3. ThomasThype表示:

    Pemain harus memahami aturan masing-masing mesin: BonaSlot – bonaslot

  4. ThomasThype表示:

    Jackpot progresif menarik banyak pemain: garuda888.top – garuda888.top

  5. Aaronbus表示:

    demo slot pg slot demo pg gratis Kasino sering memberikan hadiah untuk pemain setia

  6. Williecrady表示:

    Slot dengan bonus putaran gratis sangat populer https://bonaslot.site/# Mesin slot menawarkan berbagai tema menarik

  7. Williecrady表示:

    Permainan slot mudah dipahami dan menyenangkan https://slot88.company/# Banyak pemain berusaha untuk mendapatkan jackpot

  8. Williecrady表示:

    Pemain harus memahami aturan masing-masing mesin https://preman69.tech/# Banyak pemain menikmati bermain slot secara online

  9. JamesLok表示:

    Banyak pemain menikmati jackpot harian di slot https://preman69.tech/# Kasino di Indonesia menyediakan hiburan yang beragam

  10. DavidCooth表示:

    https://garuda888.top/# Banyak kasino memiliki program loyalitas untuk pemain

  11. DefiLlama表示:

    It?s exhausting to seek out educated people on this subject, but you sound like you understand what you?re speaking about! Thanks

  12. DavidCooth表示:

    http://slot88.company/# Kasino selalu memperbarui mesin slotnya

  13. ThomasThype表示:

    Banyak pemain menikmati bermain slot secara online: preman69 slot – preman69.tech

  14. Williecrady表示:

    Slot dengan bonus putaran gratis sangat populer http://slotdemo.auction/# Banyak pemain mencari mesin dengan RTP tinggi

  15. DavidCooth表示:

    http://garuda888.top/# Slot menawarkan kesenangan yang mudah diakses

  16. Fox表示:

    I really like what you guys are up too. This sort of clever work and coverage! Keep up the great works guys I’ve you guys to our blogroll.

  17. DavidCooth表示:

    https://slotdemo.auction/# Slot klasik tetap menjadi favorit banyak orang

  18. ThomasThype表示:

    Kasino memastikan keamanan para pemain dengan baik: garuda888 slot – garuda888

  19. JamesLok表示:

    Slot dengan pembayaran tinggi selalu diminati https://slot88.company/# Kasino selalu memperbarui mesin slotnya

  20. ThomasThype表示:

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

  21. ThomasThype表示:

    Pemain harus memahami aturan masing-masing mesin: preman69.tech – preman69.tech

  22. I have viewed that intelligent real estate agents all over the place are getting set to FSBO ***********. They are recognizing that it’s more than just placing a sign in the front area. It’s really with regards to building human relationships with these sellers who at some time will become customers. So, while you give your time and efforts to serving these suppliers go it alone : the “Law involving Reciprocity” kicks in. Good blog post.

  23. Williecrady表示:

    Bermain slot bisa menjadi pengalaman sosial http://garuda888.top/# Permainan slot mudah dipahami dan menyenangkan

  24. Williecrady表示:

    Mesin slot baru selalu menarik minat http://slotdemo.auction/# Mesin slot digital semakin banyak diminati

  25. Aaronbus表示:

    slot88 slot88.company Pemain bisa menikmati slot dari kenyamanan rumah

  26. JamesLok表示:

    Kasino di Indonesia menyediakan hiburan yang beragam http://slotdemo.auction/# Jackpot progresif menarik banyak pemain

  27. Williecrady表示:

    Banyak pemain berusaha untuk mendapatkan jackpot https://garuda888.top/# Jackpot besar bisa mengubah hidup seseorang

  28. DavidCooth表示:

    https://garuda888.top/# Kasino di Bali menarik banyak pengunjung

  29. Aaronbus表示:

    garuda888.top garuda888.top Kasino menyediakan layanan pelanggan yang baik

發佈回覆給「Williecrady」的留言 取消回覆

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