如果你的Java 程序向處在不同時區或者不同國家的用戶顯示時間和日期
那麼你需要了解Java日期類的一些更加高級的方面
在
使用Java Date和Calendar類計算
定制和解析日期
的這篇文章裡我們提供了對日期
日期數據的格式化
日期數據的解析和日期計算的一個概覽
對於這些概念的深入的理解對於討論更高級的諸如時區
國際化標准格式和SQL日期數據等這些有關日期的問題是關鍵的
我們在本文中討論的類將包含java
text
DateFormat
以及java
util
TimeZone和java
util
Locate
我們還將討論如何使用一個java
util
Date的子類java
sql
Date來從Oracle數據庫裡提取和保存Java日期數據
地區的問題
在我們國際化我們的日期數據以前
我們需要進一步的學習Locale類
也就是java
util
Locale
Locale類的一個實例通常包含國家和語言信息
其中的每一個部分都是由基於國際標准化組織(ISO)制定的國家代碼ISO-
和語言代碼ISO-
的兩字符的字符串構成的
讓我們來創建兩個Locale實例
其中一個對應的是美國英語而另一個對應的是法國法語
見表A
表A
import java
util
Locale;
public class DateExample
{
public static void main(String[] args) {
// Create a locale for the English language in the US
Locale localeEN = new Locale(
en
US
);
System
out
println(
Display Name:
+
localeEN
getDisplayName());
System
out
println(
Country:
+ localeEN
getCountry());
System
out
println(
Language:
+ localeEN
getLanguage());
// Create a locale for the French language in France
Locale localeFR = new Locale(
fr
FR
);
System
out
println(
\nDisplay Name:
+
localeFR
getDisplayName());
System
out
println(
Country:
+ localeFR
getCountry());
System
out
println(
Language:
+ localeFR
getLanguage());
// Display the English
US locale in French
System
out
println(
\nen Display Name in French:
+
localeEN
getDisplayName(localeFR));
}
}
在這個例子中
我們用getDisplayName方法來顯示Locale的一個更易讀的文本
你還應該注意到我們在最後一次調用getDisplayName的時候
我們在對English Locale對象調用getDisplayName的時候同時傳遞了French Locale對象
這允許我們選擇顯示Locale對象所用的語言
讓我們用英語顯示法語Locale對象的內容
下面是這個例子的輸出
Display Name: English (United States)
Country: US
Language: en
Display Name: French (France)
Country: FR
Language: fr
en Display Name in French: anglais (états
Unis)
多個地域的日期格式化
使用java
util
Locale和java
text
DateFormat類我們就能夠格式化日期數據把它顯示給在另一個地域的用戶
比方法國
表B中的例子為英語和法語各創建了一個完整的日期格式化器
表 B
import java
util
Locale;
import java
util
Date;
import java
text
DateFormat;
public class DateExample
{
public static void main(String[] args) {
// Get the current system date and time
Date date = new Date();
// Get a France locale using a Locale constant
Locale localeFR = Locale
FRANCE;
// Create an English/US locale using the constructor
Locale localeEN = new Locale(
en
US
);
// Get a date time formatter for display in France
DateFormat fullDateFormatFR =
DateFormat
getDateTimeInstance(
DateFormat
FULL
DateFormat
FULL
localeFR);
// Get a date time formatter for display in the U
S
DateFormat fullDateFormatEN =
DateFormat
getDateTimeInstance(
DateFormat
FULL
DateFormat
FULL
localeEN);
System
out
println(
Locale:
+ localeFR
getDisplayName());
System
out
println(fullDateFormatFR
format(date));
System
out
println(
Locale:
+ localeEN
getDisplayName());
System
out
println(fullDateFormatEN
format(date));
}
}
這個例子的輸出是
Locale: French (France)
vendredi
octobre
h
GMT
:
Locale: English (United States)
Friday
October
:
:
PM EDT
注意這個輸出包括了時區信息
GMT
:
和 PM EDT
這個時區是人系統的時區設置裡捕獲的
你可以看見
日期是以那個地區的用戶期望的格式顯示的
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26011.html