首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 進階日期時間處理:Locale 本地化、DateFormat 多格式、TimeZone 時區轉換與 JDBC SQL Date 數據庫交互

     編輯:Java 相關知識

Locale 與國際化

java.util.Locale 封裝語言 (ISO-639) 和國家 (ISO-3166) 代碼:

Locale localeEN = new Locale("en", "US"); // 英語/美國
Locale localeFR = Locale.FRANCE;          // 法語/法國
// 顯示名稱可本地化
localeEN.getDisplayName(localeFR); // "anglais (États-Unis)"

多地區日期格式化

DateFormat.getDateTimeInstance(style, style, locale) 獲取特定風格的格式化器:

DateFormat dfFR = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRANCE);
DateFormat dfUS = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
System.out.println(dfFR.format(new Date())); // vendredi 5 octobre 2001 21 h 05 GMT-04:00
System.out.println(dfUS.format(new Date())); // Friday, October 5, 2001 9:05:54 PM EDT

時區對象與夏令時

TimeZone 提供相對 GMT 的毫秒偏移量與夏令時規則:

TimeZone tzDefault = TimeZone.getDefault();           // 系統時區
TimeZone tzLondon = TimeZone.getTimeZone("Europe/London");
TimeZone tzParis  = TimeZone.getTimeZone("Europe/Paris");

tzDefault.getRawOffset();    // -18000000 (毫秒)
tzDefault.useDaylightTime(); // true

國際化時區日期顯示

結合 DateFormat.setTimeZone() 與 TimeZone.getDisplayName(locale) 實現跨時區、多語言顯示:

DateFormat dfEN = DateFormat.getDateTimeInstance(FULL, FULL, Locale.US);
DateFormat dfFR = DateFormat.getDateTimeInstance(FULL, FULL, Locale.FRANCE);
Date now = new Date();

dfEN.setTimeZone(tzMiami);
System.out.println(dfEN.format(now)); // Friday, October 5, 2001 10:28:02 PM EDT

dfEN.setTimeZone(tzParis);
System.out.println(dfEN.format(now)); // Saturday, October 6, 2001 4:28:02 AM CEST

dfFR.setTimeZone(tzParis);
System.out.println(dfFR.format(now)); // samedi 6 octobre 2001 04 h 28 GMT+02:00

數據庫日期存取 (JDBC SQL Date)

java.sql.Date 繼承 java.util.Date,配合 PreparedStatement 實現與 Oracle DATE 類型映射:

// 存入
java.util.Date utilDate = new Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
ps.setDate(1, sqlDate); // JDBC 驅動自動轉換為 Oracle DATE

// 讀取
ResultSet rs = ps.executeQuery("SELECT LAST_HIT FROM LAST_ACCESS");
if (rs.next()) {
    java.sql.Date dbDate = rs.getDate("LAST_HIT"); // 自動轉換為 java.sql.Date
}

注意:java.sql.Date 僅保留日期部分(時分秒歸零),若需完整時間戳請使用 java.sql.Timestamp。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved