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

  1. Henryfet表示:

    buy doxycycline online: doxy 200 – doxycycline hyclate

  2. Richardorele表示:

    neurontin 100 mg cost: cost of brand name neurontin – neurontin 600mg

  3. Henryfet表示:

    doxycycline tablets: doxycycline 50 mg – buy doxycycline without prescription uk

  4. Henryfet表示:

    buy neurontin canadian pharmacy: neurontin 300 mg price in india – neurontin 300mg capsule

  5. MarvinRoave表示:

    order amoxicillin 500mg amoxicillin 500mg over the counter medicine amoxicillin 500

  6. Recomendo uma excelente casa de apostas 1win

  7. A melhor casa de apostas confiavel, recomendada 1win

  8. Lewisslund表示:

    В нашем мире, где диплом – это начало отличной карьеры в любой области, многие стараются найти максимально простой путь получения качественного образования. Необходимость наличия документа об образовании переоценить попросту невозможно. Ведь диплом открывает двери перед каждым человеком, который собирается начать трудовую деятельность или учиться в любом ВУЗе.
    В данном контексте наша компания предлагает максимально быстро получить этот важный документ. Вы имеете возможность заказать диплом, и это становится отличным решением для человека, который не смог завершить образование или утратил документ. дипломы производятся аккуратно, с максимальным вниманием к мельчайшим деталям. В результате вы сможете получить документ, 100% соответствующий оригиналу.
    Превосходство этого решения заключается не только в том, что можно оперативно получить диплом. Весь процесс организован удобно и легко, с профессиональной поддержкой. От выбора необходимого образца диплома до консультации по заполнению личной информации и доставки в любой регион страны — все под полным контролем наших специалистов.
    Всем, кто хочет найти максимально быстрый способ получения требуемого документа, наша компания готова предложить отличное решение. Заказать диплом – значит избежать долгого обучения и не теряя времени перейти к личным целям: к поступлению в университет или к началу трудовой карьеры.
    http://www.diploman-russia.com/

  9. Billyved表示:

    http://doxycyclinea.online/# doxycycline 100mg

  10. MarvinRoave表示:

    zithromax 250 mg generic zithromax 500mg india where to get zithromax

  11. Dayson_gmSr表示:

    фен аналог дайсон https://www.dyson-feny.com/ .

  12. Billyved表示:

    http://gabapentinneurontin.pro/# neurontin tablets 300 mg

  13. Billyved表示:

    http://gabapentinneurontin.pro/# neurontin generic cost

  14. Henryfet表示:

    20 mg prednisone tablet: prednisone 20mg cheap – over the counter prednisone medicine

  15. Richardorele表示:

    zithromax 250mg: generic zithromax over the counter – zithromax over the counter uk

  16. Charleselila表示:

    amoxicillin 250 mg price in india: generic amoxicillin 500mg – amoxicillin 500mg price canada

  17. Charleselila表示:

    buy doxycycline online without prescription: buy generic doxycycline – how to order doxycycline

  18. Henryfet表示:

    zithromax capsules price: buy zithromax online fast shipping – order zithromax without prescription

  19. Отличный сайт! Тут Вы можете найтиновые сервера майнкрафт

  20. Henryfet表示:

    buying amoxicillin in mexico: can you buy amoxicillin uk – where can i buy amoxicillin without prec

  21. MarvinRoave表示:

    neurontin online neurontin 900 neurontin 600 mg cost

  22. A melhor casa de apostas, eu recomendo 1win

  23. Recomendo a casa de apostas mais confiavel 1win

  24. Billyved表示:

    https://zithromaxa.store/# zithromax capsules

  25. MarvinRoave表示:

    zithromax generic price can you buy zithromax over the counter in mexico zithromax prescription online

  26. Billyved表示:

    http://prednisoned.online/# medicine prednisone 5mg

  27. Henryfet表示:

    how to order doxycycline: doxycycline prices – doxycycline

  28. Billyved表示:

    https://prednisoned.online/# prednisone tablets canada

  29. Richardorele表示:

    order doxycycline: doxycycline 100mg capsules – generic for doxycycline

  30. 1lpenistrGed表示:

    Лендинг-пейдж — это одностраничный сайт, предназначенный для рекламы и продажи товаров или услуг, а также для сбора контактных данных потенциальных клиентов. Вот несколько причин, почему лендинг-пейдж важен для бизнеса:
    Увеличение узнаваемости компании. Лендинг-пейдж позволяет представить компанию и её продукты или услуги в выгодном свете, что способствует росту узнаваемости бренда.
    Повышение продаж. Заказать лендинг можно здесь – 1landingpage.ru Одностраничные сайты позволяют сосредоточиться на конкретных предложениях и акциях, что повышает вероятность совершения покупки.
    Оптимизация SEO-показателей. Лендинг-пейдж создаются с учётом ключевых слов и фраз, что улучшает позиции сайта в результатах поиска и привлекает больше целевых посетителей.
    Привлечение новой аудитории. Одностраничные сайты могут использоваться для продвижения новых продуктов или услуг, а также для привлечения внимания к определённым кампаниям или акциям.
    Расширение клиентской базы. Лендинг-пейдж собирают контактные данные потенциальных клиентов, что позволяет компании поддерживать связь с ними и предлагать дополнительные услуги или товары.
    Простота генерации лидов. Лендинг-пейдж предоставляют краткую и понятную информацию о продуктах или услугах, что облегчает процесс принятия решения для потенциальных клиентов.
    Сбор персональных данных. Лендинг-пейдж позволяют собирать информацию о потенциальных клиентах, такую как email-адрес, имя и контактные данные, что помогает компании лучше понимать свою аудиторию и предоставлять более персонализированные услуги.
    Улучшение поискового трафика. Лендинг-пейдж создаются с учётом определённых поисковых запросов, что позволяет привлекать больше целевых посетителей на сайт.
    Эффективное продвижение новой продукции. Лендинг-пейдж можно использовать для продвижения новых товаров или услуг, что позволяет привлечь внимание потенциальных клиентов и стимулировать их к покупке.
    Лёгкий процесс принятия решений. Лендинг-пейдж содержат только самую необходимую информацию, что упрощает процесс принятия решения для потенциальных клиентов.
    В целом, лендинг-пейдж являются мощным инструментом для продвижения бизнеса, увеличения продаж и привлечения новых клиентов.
    Заказать лендинг

發佈留言

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