(Java)你的日期還在用String嗎?

           還記得開始做項目的時候,爲了省事,躲避未來已知或未知的麻煩,好多日期格式的都直接用String類型了。後來被強制要求用Date或DateTime類型,也沒有實際去追問。

    這裏就又要提一句老話了:出來混總是要還的。這次又要操作日期,不同的是我們已經過了囫圇吞棗的年紀。

    經過一番實踐和調查,明白了我們爲什麼要用Date類型:

            1、數據規範。Date對合法日期型會校驗,包括閏年2月這種。避免字符型變量產生的某月32號,日期長度不對,日期格式不統一等問題。如,面對字符型的2015111這種數據不知道是11月1日還是1月11日,只想說日…
    2、檢索效率。如果你經常在where後面帶這個日期,或者要給這個字段建索引。你可以試試Date和Char的差別,更別說分區索引了。
    3、計算方便。當你計算兩個日期差幾天,你是願意對着char寫個function判斷大月小月閏月呢,還是直接拿Date變量date1-date2呢?
     
    上面給出了一些我們爲什麼用Date的原因,下面我們就來解決應用中的一些問題。
   
    背景需求: 查詢生日在XXXX年XX月XX日到YYYY年YY月YY日範圍的人員信息。
    思路:先從Jsp獲取日期控制範圍(如,20-30歲的),然後從數據庫獲取生日信息,以當前日期減去範圍值,就是要查詢的生日範圍了。

    代碼:
//		-------------Start    轉換時間,獲取教師的出生日期所屬範圍,格式爲:2015-12-16 17:56:01-----------
		String max=request.getParameter("maxAge");
		String min=request.getParameter("minAge");
		if(!"".equals(min) && min!=null)
		{
			int maxAge = Integer.parseInt(max);
			int minAge = Integer.parseInt(min);
			SimpleDateFormat now = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);//設置原始日期格式
			Calendar cMax = Calendar.getInstance();
			Calendar cMin = Calendar.getInstance();
			//當前日期減去範圍值
			cMax.add(Calendar.YEAR, -minAge);
			cMin.add(Calendar.YEAR, -maxAge);
			String minDate = cMax.getTime().toString();
			String maxDate = cMin.getTime().toString();
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置要轉換的格式
		       try
		       {
		       	   Date dateMin=now.parse(minDate);
		       	   Date dateMax=now.parse(maxDate);
		           String minminDate=sdf.format(dateMin);
		           String maxmaxDate=sdf.format(dateMax);
		           conditions.setMaxDate(sdf.parse(minminDate));
				   conditions.setMinDate(sdf.parse(maxmaxDate));
		       }
		       catch (ParseException e)
		       {
		           e.printStackTrace();
		       }
		}else{
			conditions.setMaxDate(null);
			conditions.setMinDate(null);		
		}
//		-------------End      轉換時間,獲取教師的出生日期所屬範圍,格式爲:2015-12-16 17:56:01------------

                看起來比較麻煩,但思路還是比較清晰的。
     希望大家謹記,還是儘量別用String了哈~

    

       

發佈了145 篇原創文章 · 獲贊 37 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章