服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java高级日期概念


  如果你的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。这个时区是人系统的时区设置里捕获的。你可以看见,日期是以那个地区的用户期望的格式显示的。

扫描关注微信公众号