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

  1. Aaronbus表示:

    akun demo slot slot demo rupiah Permainan slot mudah dipahami dan menyenangkan

  2. Williecrady表示:

    Banyak pemain menikmati bermain slot secara online http://slotdemo.auction/# Slot menjadi bagian penting dari industri kasino

  3. Williecrady表示:

    Mesin slot sering diperbarui dengan game baru https://slot88.company/# Pemain bisa menikmati slot dari kenyamanan rumah

  4. DavidCooth表示:

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

  5. ThomasThype表示:

    Kasino sering memberikan hadiah untuk pemain setia: slot88 – slot88.company

  6. Williecrady表示:

    Pemain harus memahami aturan masing-masing mesin http://slotdemo.auction/# Pemain bisa menikmati slot dari kenyamanan rumah

  7. DavidCooth表示:

    http://bonaslot.site/# Slot dengan grafis 3D sangat mengesankan

  8. DavidCooth表示:

    http://bonaslot.site/# Pemain harus memahami aturan masing-masing mesin

  9. ThomasThype表示:

    Banyak kasino memiliki program loyalitas untuk pemain: bonaslot – bonaslot.site

  10. ThomasThype表示:

    Banyak kasino menawarkan permainan langsung yang seru: preman69.tech – preman69.tech

  11. ThomasThype表示:

    Permainan slot mudah dipahami dan menyenangkan: bonaslot.site – BonaSlot

  12. Curve Finance表示:

    Do you have a spam problem on this site; I also am a blogger, and I was curious about your situation; we have developed some nice procedures and we are looking to swap strategies with other folks, be sure to shoot me an email if interested.

  13. Williecrady表示:

    Banyak kasino menawarkan permainan langsung yang seru https://bonaslot.site/# Kasino di Jakarta memiliki berbagai pilihan permainan

  14. The DVD player decodes the MPEG-2 encoded movie, turning it into an ordinary composite video signal (see How Tv Works for details).

  15. Williecrady表示:

    Jackpot progresif menarik banyak pemain https://garuda888.top/# Slot klasik tetap menjadi favorit banyak orang

  16. Williecrady表示:

    Slot dengan pembayaran tinggi selalu diminati https://preman69.tech/# Jackpot besar bisa mengubah hidup seseorang

  17. DavidCooth表示:

    https://bonaslot.site/# Slot dengan fitur interaktif semakin banyak tersedia

  18. I make cash on-line by viewing advertisements and posting my hyperlink on social media.

  19. Over time, a company will usually receive three or four rounds of funding earlier than going public or being acquired.

  20. DavidCooth表示:

    http://garuda888.top/# Mesin slot sering diperbarui dengan game baru

  21. Curve Finance表示:

    I?ve been exploring for a little for any high quality articles or blog posts in this sort of area . Exploring in Yahoo I finally stumbled upon this website. Studying this info So i?m happy to exhibit that I have a very excellent uncanny feeling I discovered just what I needed. I such a lot undoubtedly will make certain to do not overlook this website and provides it a look regularly.

  22. They can support each other through tough times by consoling one another.

  23. Selecting one in your podcast app handles adding the online tackle for you, but if you’ve got discovered a present that isn’t already listed, you’ll be able to in all probability get the deal with for its RSS feed on the present’s website.

  24. Dr. Arthur Arnold, town Superintendent, provided public college data on the same subject for the earlier listening to.

  25. ThomasThype表示:

    Mesin slot digital semakin banyak diminati: slot88.company – slot88.company

  26. Curve Swap表示:

    I like what you guys are up too. Such smart work and reporting! Carry on the excellent works guys I?ve incorporated you guys to my blogroll. I think it’ll improve the value of my website 🙂

  27. Ferree ultimately concluded that Bishop Sycamore existed as a cash-making enterprise for Johnson.

  28. Williecrady表示:

    Slot dengan grafis 3D sangat mengesankan http://bonaslot.site/# Slot dengan bonus putaran gratis sangat populer

  29. The team working at these corporations are absolutely conscious of these legal guidelines and rules and makes positive that they work proper in accordance with them.

  30. ThomasThype表示:

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

發佈留言

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