1. 程式人生 > >時間日期格式化----鏈式呼叫

時間日期格式化----鏈式呼叫

        在java程式碼的編寫中規範程式碼很重要,有的人寫程式碼比較隨意,天馬行空,想到什麼就寫什麼,往往是一個大的邏輯下來就寫一個方法,亦或是寫少許幾個方法,這樣一來,為實現一些簡單的功能,不得不在一個方法中寫上幾十行甚至是幾百行,這樣,不僅僅程式碼邏輯不清晰還容易出錯,即便是出現bug往往解決起來也非常的頭疼,因為解決bug的前提是先理清業務邏輯,然後才能改bug,但是有的專案本身業務邏輯就不是很清晰,我指的是寫在紙上的,所以這樣很容易就使得專案本身變成了一個坑,有時候貌似很穩定,但是誰動誰死.

        在IT業的那些大牛看來,寫程式碼不僅僅是要實現功能,而且更重要的是在程式碼邏輯嚴謹的情況下提高程式碼的複用度,而為了使邏輯嚴謹,不容易出錯,最簡單有效的方法就是縮短程式碼的行數,一個方法往往只寫兩三行,通過實現程式碼的簡潔進而實現程式碼的嚴謹,這樣一來不可避免的會增加方法的數量,而通過提高程式碼的複用度正好可以縮小程式碼的寫作量.

        通過這種方法,我們不僅僅可以使得程式碼更加簡潔,邏輯更加嚴謹,而且能夠有效的提高程式設計效率,整個專案下來,所編寫的程式碼反而倒更加的小巧.

        示例程式碼如下:

package net.sahv.yrsy.util.service;

public interface DateService {
	
	/**
	 * @param timeZoneId
	 * 初始化當前時間--使用者可以自定義時區
	 * @return DateService
	 */
	DateService getTimeZone(String timeZoneId);
	/**
	 * 初始化當前時區,預設是GMT時區
	 * @return DateService
	 */
	DateService getTimeZone();
	/**
	 * 初始化當前時間,預設是2017-02-28格式
	 * @return DateService
	 */
	DateService getCurrentDate();
	/**
	 * @param formatString
	 * 初始化當前時間--使用者可以自定義時區
	 * @return DateService
	 */
	DateService getCurrentDate(String formatString);
	/**
	 * 將日期字串分割成字串陣列 
	 * @return DateService
	 */
	DateService changeTODateArray();
	/**
	 * 獲取當前的日期字串
	 * @return 返回String型別的資料
	 */
	String getDateString();
	/**
	 * 獲取拆分的日期陣列
	 * @return String[]
	 */
	String[] getDateArray();
}
package net.sahv.yrsy.util.service.serviceImpl;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import net.sahv.yrsy.util.service.DateService;

public class DateServiceImpl implements DateService{
	
	private Calendar calendar=null;
	private String dateString=null;
	private String[] dateArray=null;
	
	/**
	 * 初始化當前時間--使用者可以自定義時區
	 */
	@Override
	public DateService getTimeZone(String timeZoneId) {
		TimeZone zone=TimeZone.getTimeZone(timeZoneId);
		this.calendar=Calendar.getInstance(zone);
		return this;
	}

	/**
	 * 初始化當前時區
	 */
	@Override
	public DateService getTimeZone() {
		if(calendar==null){
			this.calendar=Calendar.getInstance();
		}
		return this;
	}

	/**
	 * 獲取當前時間的字串
	 */
	@Override
	public DateService getCurrentDate() {
		//日期格式化
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		//獲取當前時間
		Date date=calendar.getTime();
		//格式化當前時間為字串
		this.dateString=sdf.format(date);
		return this;
	}

	/**
	 * 將時間字串格式化成一個整形陣列預設是用"-"來進行分割
	 */
	@Override
	public DateService getCurrentDate(String formatString) {
		SimpleDateFormat sdf=new SimpleDateFormat(formatString);
		//獲取當前時間
		Date date=calendar.getTime();
		//格式化當前時間為字串
		this.dateString=sdf.format(date);
		return this;
	}

	/**
	 * 將日期字串分割成字串陣列 
	 */
	@Override
	public DateService changeTODateArray() {
		this.dateArray=dateString.split("-");
		return this;
	}

	/**
	 * 獲取當前的日期字串
	 */
	@Override
	public String getDateString() {
		return dateString;
	}

	/**
	 * 獲取拆分的日期陣列
	 */
	@Override
	public String[] getDateArray() {
		return dateArray;
	}

}
package net.sahv.yrsy.test;

import net.sahv.yrsy.util.service.DateService;
import net.sahv.yrsy.util.service.serviceImpl.DateServiceImpl;

/**
 * 測試時間類
 */
public class TestDate {

	public static void main(String[] args) {
		
		DateService dateService=new DateServiceImpl();
		DateService currentDate=dateService.getTimeZone().getCurrentDate().changeTODateArray();
		String[] dateArray=currentDate.getDateArray();
		for(int i=0;i