1. 程式人生 > >一種在ssm框架下時間互動的簡單解決方案

一種在ssm框架下時間互動的簡單解決方案

  總結基於ssm框架下的統一快速處理時間的簡單方案。

1 約定與頁面互動格式

後臺程式為前端頁面提供介面,統一使用時間字串互動:包含兩種字串格式:"yyyy-MM-dd HH:mm:ss"和"yyyy-MM-dd";

一般而言,頁面使用時間控制元件,容易實現統一的格式化樣式,當需要時間精度較高時,帶上時分秒,當時間精度僅需要精確到天時,僅儲存年月日即可。

2 約定資料庫儲存格式

以oracle資料為例:時間的儲存分為:

DATE、TIME/TIMESTAMP

DATE:在資料庫中儲存時間僅精確到日  年月日 yyyy/MM/dd

TIME/TIMESTAMP:在資料庫中儲存時間精確到秒

3 時間工具類

 自定義時間工具類,對兩種格式的時間進行轉換:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {

	/**
	 * 時間格式
	 */
	public static final String PATTERN_TIME = "yyyy-MM-dd HH:mm:ss";
	/**
	 * 日期格式
	 */
	public static final String PATTERN_DATE = "yyyy-MM-dd";

	static SimpleDateFormat timeFormat = new SimpleDateFormat(PATTERN_TIME);
	static SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);

	public static Date parse(String content) {
		if (null != content && content.trim().length() > 0) {
			try {
				return timeFormat.parse(content);
			} catch (ParseException e) {
				try {
					return dateFormat.parse(content);
				} catch (ParseException e1) {
					return null;
				}
			}
		}
		return null;
	}
}

4 全域性時間轉換服務

自定義全域性時間轉換器,對所有bean中的date格式的值進行轉換:
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

public class GlobalDateConverter implements Converter<String, Date> {

	@Override
	public Date convert(String source) {
		if (null != source && "" != source && !"NaN".equals(source)) {
			return DateUtil.parse(source);
		} else {
			return null;
		}
	}
}

5 向springmvc容器中注入全域性時間轉換器

 向springmvc配置的註解驅動中註冊:
<bean id="converionService"
	class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<property name="converters">
		<list>
			<bean class="com.xxx.ssm.common.converter.GlobalDateConverter" />
			
	</property>
</bean>

<mvc:annotation-driven enable-matrix-variables="true"
	conversion-service="converionService">
	<mvc:message-converters>
		<beans:bean
			class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
			<property name="supportedMediaTypes">
				<list>
					<value>text/html;charset=UTF-8</value>
				</list>
			</property>
		</beans:bean>
	</mvc:message-converters>
</mvc:annotation-driven>

6 在bean中添加註解,使用jackson:@JsonFormat

按照指定格式輸出時間字串到頁面:
@JsonFormat(pattern = DateUtil.PATTERN_DATE)

7 在bean中添加註解,確定資料庫儲存格式:

@ColumnType(jdbcType = JdbcType.TIMESTAMP)