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

15,681 Responses

  1. Great ? I should certainly pronounce, impressed with your website. I had no trouble navigating through all tabs as well as related info ended up being truly easy to do to access. I recently found what I hoped for before you know it at all. Reasonably unusual. Is likely to appreciate it for those who add forums or something, web site theme . a tones way for your customer to communicate. Excellent task..

  2. JosephFam表示:

    price of ventolin: buy Ventolin – buy ventolin inhaler

  3. Davidmer表示:

    prednisone 20mg prices: prednisone 21 pack – prednisone cost 10mg

  4. Hmm is anyone else experiencing problems with the images on this blog loading? I’m trying to determine if its a problem on my end or if it’s the blog. Any suggestions would be greatly appreciated.

  5. Davidmer表示:

    Buy compounded semaglutide online: rybelsus – rybelsus generic

  6. Davidmer表示:

    lasix online: lasix generic – lasix uses

  7. JosephWrela表示:

    ordering prednisone: medicine prednisone 10mg – order prednisone online canada

  8. Have you ever thought about adding a little bit more than just your articles? I mean, what you say is important and everything. But imagine if you added some great visuals or videos to give your posts more, “pop”! Your content is excellent but with pics and video clips, this blog could undeniably be one of the greatest in its field. Good blog!

  9. It’s a pity you don’t have a donate button! I’d without a doubt donate to this outstanding blog! I suppose for now i’ll settle for book-marking and adding your RSS feed to my Google account. I look forward to brand new updates and will talk about this blog with my Facebook group. Talk soon!

  10. JosephFam表示:

    Buy semaglutide pills: rybelsus – Buy semaglutide pills

  11. Excellent post. I was checking continuously this blog and I’m impressed! Extremely useful information specifically the last part 🙂 I care for such information a lot. I was looking for this certain information for a very long time. Thank you and best of luck.

  12. Sergiohex表示:

    https://furosemide.men/# furosemide

  13. Sergiohex表示:

    http://prednisolone.pro/# buy prednisone without prescription

  14. One more thing I would like to convey is that in place of trying to accommodate all your online degree courses on days and nights that you conclude work (since the majority people are drained when they return), try to arrange most of your sessions on the weekends and only 1 or 2 courses for weekdays, even if it means a little time away from your saturdays. This is beneficial because on the saturdays and sundays, you will be far more rested plus concentrated on school work. Many thanks for the different ideas I have learned from your website.

  15. What?s Happening i am new to this, I stumbled upon this I have found It positively useful and it has aided me out loads. I hope to contribute & aid other users like its helped me. Good job.

  16. I’m not sure exactly why but this website is loading extremely slow for me. Is anyone else having this issue or is it a problem on my end? I’ll check back later and see if the problem still exists.

  17. JosephFam表示:

    buy semaglutide online: Buy semaglutide pills – buy semaglutide online

  18. JosephWrela表示:

    Buy semaglutide pills: rybelsus – Rybelsus 7mg

  19. very good publish, i definitely love this web site, keep on it

  20. Профессиональный сервисный центр по ремонту компьютеров и ноутбуков в Москве.
    Мы предлагаем: ремонт ноутбуков apple москва
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  21. Great site. Lots of helpful information here. I?m sending it to several pals ans also sharing in delicious. And of course, thanks to your effort!

  22. JosephWrela表示:

    lasix side effects: furosemide online – lasix

  23. JosephFam表示:

    prednisone 250 mg: prednisone 20mg tablets where to buy – prednisone sale

  24. My brother recommended I might like this blog. He was totally right. This post actually made my day. You cann’t imagine just how much time I had spent for this info! Thanks!

  25. Kupit_nbPi表示:

    Купить бетон от производителя в Нижнем Новгороде, Бетонные смеси в Нижнем Новгороде: лучшие предложения, по доступным ценам, Бетон от надежных поставщиков в Нижнем Новгороде, с гарантией качества, с гарантией качества, с высоким качеством, с индивидуальным подходом, по доступной цене
    бетон цена нижний новгород https://1beton-52.ru/ .

  26. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт техники в воронеже

  27. Профессиональный сервисный центр по ремонту компьютеров и ноутбуков в Москве.
    Мы предлагаем: ремонт макбук в москве центр
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  28. zentai表示:

    Terrific post but I was wondering if you could write a litte more on this subject? I’d be very grateful if you could elaborate a little bit more. Kudos!

發佈留言

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