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

11,141 Responses

  1. OLaneevige表示:

    Excellent article. Keep writing such kind of info on your page. Im really impressed by it.
    Hey there, You’ve done a fantastic job. I’ll certainly digg it and individually suggest to my friends. I’m confident they will be benefited from this web site.

    https://motflix.cc/

  2. MarvinRoave表示:

    buy zithromax 1000 mg online zithromax 250 mg australia buy zithromax

  3. Billyved表示:

    http://gabapentinneurontin.pro/# neurontin brand name 800mg

  4. Henryfet表示:

    neurontin cost australia: neurontin canada online – neurontin 400mg

  5. Richardorele表示:

    neurontin 300mg tablet cost: buy neurontin canada – cost of neurontin

  6. Escolha apenas esta casa de apostas 1win

  7. Recomendo uma excelente empresa de apostas 1win

  8. MarvinRoave表示:

    buy cheap amoxicillin cost of amoxicillin 30 capsules generic amoxicillin online

  9. Henryfet表示:

    zithromax capsules 250mg: zithromax 250 mg tablet price – buy generic zithromax online

  10. Отличный сайт! Тут Вы можете приобрестиГелиевые шары

  11. Henryfet表示:

    price of amoxicillin without insurance: amoxicillin 500 mg brand name – amoxicillin no prescription

  12. FobertWen表示:

    В нашем обществе, где диплом – это начало отличной карьеры в любом направлении, многие ищут максимально простой путь получения качественного образования. Важность наличия официального документа об образовании сложно переоценить. Ведь именно диплом открывает двери перед любым человеком, который собирается начать профессиональную деятельность или учиться в высшем учебном заведении.
    Предлагаем быстро получить этот важный документ. Вы можете купить диплом, и это становится выгодным решением для человека, который не смог завершить образование, потерял документ или хочет исправить плохие оценки. дипломы производятся с особой тщательностью, вниманием к мельчайшим элементам, чтобы в итоге получился полностью оригинальный документ.
    Плюсы данного подхода состоят не только в том, что вы оперативно получите свой диплом. Весь процесс организован удобно и легко, с профессиональной поддержкой. От выбора нужного образца до консультации по заполнению персональных данных и доставки по России — все под полным контролем опытных специалистов.
    В результате, для тех, кто ищет быстрый способ получения необходимого документа, наша компания предлагает выгодное решение. Приобрести диплом – это значит избежать длительного процесса обучения и сразу переходить к личным целям, будь то поступление в университет или старт успешной карьеры.
    diplom-net.ru

  13. Billyved表示:

    https://doxycyclinea.online/# where can i get doxycycline

  14. Timsothyabela表示:

    В наше время, когда диплом – это начало отличной карьеры в любой сфере, многие пытаются найти максимально быстрый путь получения образования. Необходимость наличия официального документа сложно переоценить. Ведь именно диплом открывает дверь перед всеми, кто хочет начать профессиональную деятельность или учиться в ВУЗе.
    В данном контексте мы предлагаем оперативно получить любой необходимый документ. Вы сможете заказать диплом нового или старого образца, и это будет отличным решением для человека, который не смог завершить образование, потерял документ или желает исправить свои оценки. Все дипломы производятся с особой аккуратностью, вниманием к мельчайшим деталям, чтобы в итоге получился документ, полностью соответствующий оригиналу.
    Плюсы подобного решения заключаются не только в том, что вы сможете оперативно получить диплом. Весь процесс организован удобно, с профессиональной поддержкой. Начав от выбора нужного образца до консультации по заполнению личных данных и доставки в любое место страны — все будет находиться под абсолютным контролем опытных специалистов.
    Для тех, кто хочет найти максимально быстрый способ получения необходимого документа, наша компания готова предложить выгодное решение. Приобрести диплом – это значит избежать долгого обучения и сразу переходить к важным целям: к поступлению в университет или к началу трудовой карьеры.
    vuzdiploma

  15. MarvinRoave表示:

    amoxil pharmacy buy amoxicillin from canada purchase amoxicillin 500 mg

  16. Billyved表示:

    https://amoxila.pro/# amoxicillin 30 capsules price

  17. Billyved表示:

    https://amoxila.pro/# generic amoxicillin

  18. Toeeuy表示:

    brand cialis icy – apcalis coal penisole wish

  19. MarvinRoave表示:

    cheap zithromax pills how to buy zithromax online buy zithromax online fast shipping

  20. Henryfet表示:

    where can i buy amoxicillin over the counter uk: buy amoxicillin online cheap – where can i get amoxicillin 500 mg

  21. Richardorele表示:

    order prednisone 100g online without prescription: over the counter prednisone pills – how to buy prednisone online

  22. Charleselila表示:

    doxycycline 100mg dogs: doxycycline 100mg capsules – buy doxycycline online 270 tabs

  23. Henryfet表示:

    amoxicillin 500 capsule: amoxicillin 825 mg – amoxicillin canada price

  24. MarvinRoave表示:

    amoxicillin cephalexin order amoxicillin online uk amoxicillin price without insurance

  25. Отличный сайт! Тут Вы можете приобрестиШары на день рождения

  26. Ir para a melhor casa de apostas 1win

  27. Eu recomendo a melhor casa de apostas 1win

  28. Henryfet表示:

    amoxicillin tablets in india: prescription for amoxicillin – order amoxicillin 500mg

  29. Billyved表示:

    http://prednisoned.online/# 20 mg of prednisone

發佈留言

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