1: /**
2: * 將西元年 轉成 中國年
3: */
4: public static Date convertToMinguo(Date date){
5: if( date != null ) {
6: Calendar cal = Calendar.getInstance();
7: cal.setTime(date);
8: int year = cal.get(Calendar.YEAR) - 1911;
9: int month = cal.get(Calendar.MONTH);
10: int day = cal.get(Calendar.DAY_OF_MONTH);
11: cal.set(year, month, day);
12: return cal.getTime();
13: }
14: return null;
15: }
二、在JSPE畫面呈現中國年的方法:
1: <%@ page language="java" contentType="text/html;charset=UTF-8"%>
2: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3: <%@ taglib prefix="i18n" uri="http://www.bea.com/servers/p13n/tags/internationalization" %>
4:
5: <fmt:setLocale value="zh-TW"/>
6: <!-- 中國年的格式,可以定義在多國語言的設定檔裡,
7: 省的每個人都要key ( pattern="yyyy年MM月dd日" ) -->
8: <c:set var="minguoPattern">
9: <i18n:getMessage messageName="minguopattern" />
10: </c:set>
11: <fmt:formatDate var="dateBegin"
12: value="${bulletin.dateBegin}"
13: pattern="${minguoPattern}" />
14: <!-- 把 O100 TRIM 成 100 -->
15: <c:out value="${fn:substringAfter(dateBegin, '0')}"/>
三、比較麻煩的是以 日期 為查詢條件,因為 informix的日期函數: DATE(),是以一個字符串變量為參數,其格式由環境變量 DBDATE 指定, 並返回一個 DATE 類型。在setnet32中格式必須設為是「MDY4/」
1: /**
2: * @param str 格式:100/MM/dd
3: * @return 西元年:MM/dd/yyyy
4: */
5: public static String convertMDY4(String str){
6: if( str != null && !str.trim().isEmpty()) {
7: String year = str.substring(0, 3);
8: int y = Integer.parseInt( year ) + 1911;
9: String month = str.substring(4, 6);
10: String day = str.substring(7,9);
11: return String.format("%1$s/%2$s/%3$s", month, day, String.valueOf(y) );
12: }
13: return null;
14: }
四、最後,是資料確定要進資料庫之前,一定要再轉回西元年
為什麼? 因為要維持資料的一致性