站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题Java高级日期概念

Java高级日期概念

摘要: Java高级日期概念
<table cellSpacing=0 cellPadding=0 border=0 class="zh114" align="right"> <tr> <td > </td> </tr> </table>
  如果你的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-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" );
  
  
  
  // 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 5 octobre 2001 21 h 05 GMT-04:00
  
  Locale: English (United States)
  
  Friday, October 5, 2001 9:05:54 PM EDT
  
  
  
  注意这个输出包括了时区信息:GMT-04:00 和 PM EDT。这个时区是人系统的时区设置里捕获的。你可以看见,日期是以那个地区的用户期望的格式显示的。

<table width="96%"> <tr> <td background="http:///images/dian.gif" height="3"></td> </tr> </table>

↑返回目录
前一篇: 类的基本概念
后一篇: 基于JAVA的ICQ系统的设计于实现