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

37,556 Responses

  1. Williecrady表示:

    Kasino memiliki suasana yang energik dan menyenangkan https://slotdemo.auction/# Kasino memiliki suasana yang energik dan menyenangkan

  2. DavidCooth表示:

    http://preman69.tech/# Beberapa kasino memiliki area khusus untuk slot

  3. DavidCooth表示:

    http://slotdemo.auction/# Slot dengan tema film terkenal menarik banyak perhatian

  4. ThomasThype表示:

    Pemain harus memahami aturan masing-masing mesin: bonaslot.site – bonaslot.site

  5. Aaronbus表示:

    slot demo slotdemo Slot dengan tema film terkenal menarik banyak perhatian

  6. Williecrady表示:

    Kasino menawarkan pengalaman bermain yang seru https://slotdemo.auction/# Slot modern memiliki grafik yang mengesankan

  7. Williecrady表示:

    Kasino memiliki suasana yang energik dan menyenangkan https://preman69.tech/# Jackpot progresif menarik banyak pemain

  8. Williecrady表示:

    Kasino menawarkan pengalaman bermain yang seru https://garuda888.top/# Slot menjadi daya tarik utama di kasino

  9. ThomasThype表示:

    Slot dengan grafis 3D sangat mengesankan: preman69 – preman69 slot

  10. DavidCooth表示:

    https://slotdemo.auction/# п»їKasino di Indonesia sangat populer di kalangan wisatawan

  11. ThomasThype表示:

    Kasino di Jakarta memiliki berbagai pilihan permainan: garuda888.top – garuda888 slot

  12. DavidCooth表示:

    http://bonaslot.site/# Pemain sering mencoba berbagai jenis slot

  13. ThomasThype表示:

    Kasino di Jakarta memiliki berbagai pilihan permainan: slot 88 – slot88

  14. Aaronbus表示:

    slot demo slot demo Mesin slot menawarkan pengalaman bermain yang cepat

  15. Margaret Sinclair Ferguson, Deputy Director, Aberlour Little one Care Trust.

  16. Thanks for your posting. What I want to comment on is that when evaluating a good on the internet electronics shop, look for a web page with comprehensive information on important factors such as the level of privacy statement, protection details, any payment guidelines, along with terms along with policies. Always take time to investigate the help plus FAQ pieces to get a superior idea of what sort of shop functions, what they are able to do for you, and how you can make best use of the features.

  17. Aaronbus表示:

    garuda888 garuda888.top Slot dengan pembayaran tinggi selalu diminati

  18. Afterward, a battery of checks is administered, which may take several hours to complete.

  19. DavidCooth表示:

    https://preman69.tech/# Kasino selalu memperbarui mesin slotnya

  20. DavidCooth表示:

    http://preman69.tech/# Kasino di Bali menarik banyak pengunjung

  21. ThomasThype表示:

    Permainan slot mudah dipahami dan menyenangkan: slot88.company – slot88.company

  22. Aaronbus表示:

    slot demo rupiah akun demo slot Mesin slot digital semakin banyak diminati

  23. Williecrady表示:

    Slot modern memiliki grafik yang mengesankan http://slot88.company/# Bermain slot bisa menjadi pengalaman sosial

  24. Williecrady表示:

    Banyak kasino memiliki promosi untuk slot https://garuda888.top/# Kasino di Jakarta memiliki berbagai pilihan permainan

  25. CoreySOB表示:

    28 января 2025 года АО “АЛМАЗЫ ПОМОРСКОГО КРАЯ” запустило Pre-IPO на платформе FINMUSTER. Компания планирует привлечь 1 миллиард рублей для разработки алмазных месторождений в Архангельской области, что открывает новые горизонты для инвесторов.
    Инвестиции в алмазы

  26. Williecrady表示:

    Kasino sering memberikan hadiah untuk pemain setia http://garuda888.top/# Kasino di Bali menarik banyak pengunjung

  27. To prime that off, his anime DVD and motion determine collection is completely huge.

  28. After the eighth Impressionist exhibition, Gauguin struck out to search out his personal mode of expression.

發佈留言

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