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

  1. ThomasThype表示:

    Slot dengan tema film terkenal menarik banyak perhatian: garuda888 – garuda888

  2. Sonnydip表示:

    В 2025 году вопрос активации Windows 10 останется важным для многих пользователей, стремящихся обеспечить безопасность и стабильность своих устройств. Несмотря на появление новых версий операционной системы, таких как Windows 11, Windows 10 продолжит поддерживаться Microsoft с обновлениями безопасности и функциональности. Ключ активации, представляющий собой уникальную комбинацию символов, позволит подтвердить легальность вашей копии и получать доступ к критически важным обновлениям.
    ключ продукта виндовс 10

  3. DavidCooth表示:

    https://preman69.tech/# Keseruan bermain slot selalu menggoda para pemain

  4. The Apple iPad is a versatile multifunction hand-held electronic device.

  5. DavidCooth表示:

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

  6. ThomasThype表示:

    Banyak kasino memiliki promosi untuk slot: demo slot pg – slotdemo

  7. ThomasThype表示:

    Kasino sering mengadakan turnamen slot menarik: akun demo slot – slot demo

  8. Hey very cool site!! Man .. Excellent .. Amazing .. I will bookmark your blog and take the feeds also?I’m happy to find numerous useful information here in the post, we need develop more strategies in this regard, thanks for sharing. . . . . .

  9. Nice article, have a look at my site “https://www.issuewire.com/sushi-swap-the-best-crypto-platform-in-2025-1823683727364009”

  10. One thing I want to discuss is that fat reduction plan fast may be accomplished by the proper diet and exercise. Ones size not just affects appearance, but also the general quality of life. Self-esteem, depression, health risks, and physical abilities are disturbed in excess weight. It is possible to do everything right and at the same time having a gain. In such a circumstance, a medical problem may be the reason. While a lot of food rather than enough body exercise are usually to blame, common medical ailments and widely used prescriptions can certainly greatly help to increase size. Thanks alot : ) for your post here.

  11. DavidCooth表示:

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

  12. DavidCooth表示:

    http://slot88.company/# Slot dengan pembayaran tinggi selalu diminati

  13. Curve Swap表示:

    I have observed that of all varieties of insurance, health insurance is the most questionable because of the struggle between the insurance company’s duty to remain making money and the user’s need to have insurance policies. Insurance companies’ commission rates on wellbeing plans are extremely low, so some companies struggle to gain profits. Thanks for the strategies you write about through this site.

  14. Williecrady表示:

    Banyak pemain mencari mesin dengan RTP tinggi http://garuda888.top/# Mesin slot menawarkan pengalaman bermain yang cepat

  15. Williecrady表示:

    Banyak kasino menawarkan permainan langsung yang seru http://bonaslot.site/# Pemain harus menetapkan batas saat bermain

  16. Williecrady表示:

    Banyak pemain mencari mesin dengan RTP tinggi https://slot88.company/# Slot memberikan kesempatan untuk menang besar

  17. ThomasThype表示:

    Slot dengan tema budaya lokal menarik perhatian: slot 88 – slot88.company

  18. Slot Tragamonedas são um tipo de jogo de azar baseado em máquina que é popular tanto em cassinos físicos quanto online. Neste jogo, os jogadores fazem apostas e giram rolos que exibem vários símbolos. Se determinados símbolos se alinharem num padrão vencedor, os jogadores podem ganhar prémios de acordo com a tabela de pagamentos aplicável.

  19. Curve Finance表示:

    Terrific work! That is the kind of information that are supposed to be shared across the web. Shame on Google for not positioning this submit upper! Come on over and seek advice from my web site . Thanks =)

  20. Their collection options a mix of darkish and edgy items, from distressed denim to statement graphic tees.

  21. Curve Finance表示:

    I do agree with all of the ideas you’ve presented in your post. They are really convincing and will definitely work. Still, the posts are too short for starters. Could you please extend them a bit from next time? Thanks for the post.

  22. DavidCooth表示:

    https://preman69.tech/# Keseruan bermain slot selalu menggoda para pemain

  23. ThomasThype表示:

    Banyak pemain menikmati bermain slot secara online: bonaslot – bonaslot

  24. DavidCooth表示:

    http://garuda888.top/# Slot memberikan kesempatan untuk menang besar

  25. Williecrady表示:

    Banyak pemain menikmati bermain slot secara online https://preman69.tech/# Banyak kasino memiliki promosi untuk slot

  26. Aaronbus表示:

    slotdemo slot demo pg gratis Pemain sering berbagi tips untuk menang

  27. ThomasThype表示:

    Kasino menawarkan pengalaman bermain yang seru: slot 88 – slot88

  28. ThomasThype表示:

    Kasino memastikan keamanan para pemain dengan baik: slot demo pg gratis – akun demo slot

  29. Aaronbus表示:

    BonaSlot BonaSlot Pemain harus menetapkan batas saat bermain

  30. Curve Finance表示:

    I have been surfing on-line more than three hours lately, yet I by no means discovered any fascinating article like yours. It is lovely value enough for me. In my view, if all site owners and bloggers made excellent content material as you probably did, the web shall be a lot more useful than ever before.

發佈留言

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