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

  1. Generally I don’t learn article on blogs, but I would like to say that this write-up very compelled me to try and do it! Your writing taste has been surprised me. Thanks, quite nice post.

  2. Warrenmof表示:

    https://vavada.auction/# вавада рабочее зеркало

  3. In these days of austerity and relative anxiousness about taking on debt, lots of people balk up against the idea of using a credit card in order to make acquisition of merchandise or even pay for any gift giving occasion, preferring, instead only to rely on the actual tried along with trusted technique of making payment – cash. However, if you possess the cash on hand to make the purchase 100 , then, paradoxically, that is the best time to use the credit cards for several motives.

  4. I have seen a lot of useful factors on your internet site about desktops. However, I have the viewpoint that notebooks are still less than powerful more than enough to be a good selection if you generally do tasks that require plenty of power, just like video editing. But for world wide web surfing, microsoft word processing, and a lot other prevalent computer work they are just fine, provided you may not mind the small screen size. Thanks for sharing your opinions.

  5. I have observed that of all different types of insurance, medical insurance is the most dubious because of the discord between the insurance company’s need to remain profitable and the customer’s need to have insurance policies. Insurance companies’ revenue on well being plans are extremely low, so some companies struggle to gain profits. Thanks for the suggestions you discuss through this web site.

  6. Scottdiz表示:

    1win зеркало: 1вин зеркало – 1win

  7. I really appreciate this post. I have been looking everywhere for this! Thank goodness I found it on Bing. You have made my day! Thx again

  8. I have learned some significant things through your website post. One other subject I would like to say is that there are many games in the marketplace designed mainly for preschool age small children. They contain pattern acceptance, colors, animals, and designs. These commonly focus on familiarization in lieu of memorization. This keeps little children engaged without feeling like they are studying. Thanks

  9. Lesliefem表示:

    пин ап казино пинап казино пин ап вход

  10. Lesliefem表示:

    ван вин 1win 1win вход

  11. FertolBybeire表示:

    Отличный сайт! Всем рекомендую!автозапчасти в Минске

  12. Scottdaurf表示:

    pin up казино: pin up casino – пин ап казино

  13. Scottdiz表示:

    1xbet зеркало: 1xbet зеркало рабочее на сегодня – 1xbet официальный сайт мобильная версия

  14. Scottdiz表示:

    1вин сайт: 1вин официальный сайт – 1win

  15. Warrenmof表示:

    https://1xbet.contact/# 1xbet зеркало рабочее на сегодня

  16. Shaneevige表示:

    Hey, I think your blog might be having browser compatibility issues. When I look at your blog site in Firefox, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, awesome blog!
    booi casino вход

  17. как зарабатывать деньги в интернете как зарабатывать деньги в интернете .

  18. Scottdaurf表示:

    пин ап: pin up casino – pin up казино

  19. Cazrgnq表示:

    Привет, друзья!
    Приобрести диплом университета
    купить диплом в рубцовске

  20. Sazrzsy表示:

    Быстрое обучение и получение диплома магистра – возможно ли это?

    network-89217.mn.co/posts/65295776

  21. Scottdiz表示:

    пин ап зеркало: пин ап казино – пин ап зеркало

發佈留言

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