Java高级日期概念 (献给那些要国际化时间及SQL时间的兄弟)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Java高级日期概念

假如你的Java 程序向处在不同时区或者不同国家的用户显示时间和日期,那么你需要了解Java日期类的一些更加高级的方面

本文中讨论的类将包含java.text.DateFormat,以及java.util.TimeZone和java.util.Locate。我们还将讨论如何使用一个java.util.Date的子类java.sql.Date来从Oracle数据库里提取和保存Java日期数据。

地区的问题

在我们国际化我们的日期数据以前,我们需要进一步的学习Locale类,也就是java.util.Locale。Locale类的一个实例通常包含国家和语言信息。其中的每一个部分都是由基于国际标准化组织(ISO)制定的国家代码ISO-3166和语言代码ISO-639的两字符的字符串构成的。

让我们来创建两个Locale实例,其中一个对应的是美国英语而另一个对应的是法国法语。见表A。

表A

import java.util.Locale;

public class DateExample6 {

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 DateExample7 {

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" );

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航