http://dev.firnow.com/course/3_program/java/javashl/200726/11199.html

阅读更多

滴答、滴答时间在流逝--现在是何时?(二)
http://www.ibm.com/developerworks/cn/java/l-datetime/part2/index.html


http://joda-time.sourceforge.net/index.html
Joda Time - Java date and time API

Joda Time - Java date and time API







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

http://dev.firnow.com/course/3_program/java/javashl/200726/11199.html
      Java高级日期概念 


高级Java日期概念(致力于国际化的时间和时间的SQL兄弟的人)

打印查看方式: iSee共有次:3字数:2914日期:Wed,09年4月22日时间:上午5点19分

 



高级的Java日期概念




http://translate.google.com.hk/translate?hl=zh-CN&langpair=en|zh-CN&u=http://tutorialsto.com/index.php/jsp/java/senior-java-date-concepts-those-dedicated-to-the-internationalization-of-the-time-and-the-time-sql-brother.html

如果您的Java程序的用户在不同的时区不同国家的日期或时间,那么你需要了解Java Date类的一些方面更先进




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

数据区域在我们的国际日期变更,我们需要进一步研究和区域设置类别,即java.util.Locale。 区域设置通常包含一类国家和语言信息的一个例子。 其中每个部分是根据国际标准化组织(ISO)制定的ISO - 3166国家代码和语言代码的ISO - 639 2个字符的字符串组成的。
让我们创建两个区域设置的例子,其中一个对应于英国,美国,另一个是法国和法国同行。 见表答

表A



进口java.util.Locale;

公共类DateExample6(

公共静态无效的主要(字串[] args)(
/ /创建一个区域设置为美国英语。
新的区域设置区域设置localeEN =(“恩”,“美国”);

System.out.println(“显示名:”+
localeEN.getDisplayName());
System.out.println(“国:”+ localeEN.getCountry());
System.out.println(“语言:”+ localeEN.getLanguage());

/ /创建一个区域设置为法国法语。
新的区域设置区域设置localeFR =(“神父”,“文”);
System.out.println(“\ nDisplay名:”+
localeFR.getDisplayName());
System.out.println(“国:”+ localeFR.getCountry());
System.out.println(“语言:”+ localeFR.getLanguage());

/ / 显示区域设置在法国的美国英语
System.out.println(“\嫩江法语显示名称:”+
localeEN.getDisplayName(localeFR));



在这个例子中,我们使用GetDisplayName方法来显示一个更清晰的文本区域设置。 您还应当指出的是我们最后一次通话getDisplayName,我们在英文Locale对象getDisplayName在同一时候,法国Locale对象通过调用。 这使我们可以选择显示Locale对象的语言,让我们表现出在英语法语区域设置该对象的内容。 以下是这个例子的输出:
显示名称:英语(美国)
国家:美国
语言:EN
显示名称:法语(法国)
国家:阻燃
语言:神父
恩显示法语名称:英吉利(各国以及-新闻处)
日期格式的 java.util.Locale 数目地理
使用java.text.DateFormat类型,我们将能够日期格式的数据显示它在另一个法国地区,如给用户。 例如表中B英文和法文为创造一个完整的日期格式化。

表B



进口java.util.Locale;
进口是java.util.Date;
进口java.text.DateFormat;

公共类DateExample7(

公共静态无效的主要(字串[] args)(
/ /获取当前系统日期和时间。
日期日期=新的日期();

/ /获取一个法国的区域设置区域设置使用一个常数。
现场localeFR = Locale.FRANCE;

/ /创建一个英文/美国区域设置使用构造。
新的区域设置区域设置localeEN =(“恩”,“美国”);

/ /获取一个在法国展出日期时间格式化程序。
DateFormat fullDateFormatFR =
DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
localeFR);

/ /获取一个在美国显示日期时间格式化
DateFormat fullDateFormatEN =
DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
localeEN);

System.out.println(“区域设置:”+ localeFR.getDisplayName());
System.out.println(fullDateFormatFR.format(日期));
System.out.println(“区域设置:”+ localeEN.getDisplayName());
System.out.println(fullDateFormatEN.format(日期));



这个例子的输出是:
区域设置:法语(法国)
2001年10月在vendredi 5月21 Ĥ 05格林尼治标准时间04:00
区域设置:英语(美国)
星期五,2001年10月5日美国东部时间下午9时05分54秒
重视信息输出,包括时区:格林尼治标准时间04:00和下午美国东部时间。 时区是一个系统那里的渔获物的时区设置。 你可以看到,在该地区的用户日期是根据所需的显示格式。 让我们拭目以待,看看时间区的概念。

时区
的TimeZone类,即类java.util.TimeZone包含一个例子格林威治标准时间(GMT)的所得相比,时间偏移区微秒,而且处理夏令时



。 为了让所有的一区列表支持,可以使用TimeZone.getAvailableIDs,它会返回到一个区域中包含的字符串数组中的所有的ID。 TimeZone的类需要知道更多细节,请参考Sun公司的网站。
为了证明这个概念,我们将创建三个目标时区。 第一个目标将用于从系统时钟回getDefault的时区数据,第二个和第三个对象成为一个时区字符串ID。 见表ç在代码中。

表的C + +



进口java.util.TimeZone;
进口是java.util.Date;
进口java.text.DateFormat;
进口java.util.Locale;

公共类DateExample8(

公共静态无效的主要(字串[] args)(
/ /获取系统的时区。
TimeZone的timeZoneFL = TimeZone.getDefault();
System.out.println(“\ ñ”+ timeZoneFL.getDisplayName());
System.out.println(“RawOffset:”+ timeZoneFL.getRawOffset());
System.out.println(“使用夏时制:”+ timeZoneFL.useDaylightTime());

TimeZone的timeZoneLondon = TimeZone.getTimeZone(“欧洲/伦敦”);
System.out.println(“\ ñ”+ timeZoneLondon.getDisplayName());
System.out.println(“RawOffset:”+ timeZoneLondon.getRawOffset());
System.out.println(“使用夏时制:”+ timeZoneLondon.useDaylightTime());

蜡烛imeZone timeZoneParis = TimeZone.getTimeZone(“欧洲/巴黎”);
System.out.println(“\ ñ”+ timeZoneParis.getDisplayName());
System.out.println(“RawOffset:”+ timeZoneParis.getRawOffset());
System.out.println(“使用夏时制:”+ timeZoneParis.useDaylightTime());



输出如下:
东部标准时间
RawOffset:-18000000
利用日光节能:真
格林尼治标准时间+00:00
RawOffset:0
利用日光节能:真

中欧标准时间
RawOffset:3600000
利用日光节能:真
正如你看到的,我们的TimeZone对象,原来的偏移,是与之间的微秒数GMT的时差,而且还告诉我们,是否使用夏令时的时区。 有此信息,我们将能够继续与在其他时间,语言和其他共同的目标区时区和日期格式。
国际间的时区显示的转换
让我们看一个节目结合国际,时区和日期格式的例子。 表在迈阿密和公司巴黎办事处的一个D,显示了当前日期和时间的完整性。 对于迈阿密办公室,我们将在每个办公室英语显示完整的日期和时间。 在巴黎的办公室,我们将显示,法国当前的日期和时间的完整性。

表D



进口java.util.TimeZone;
进口是java.util.Date;
进口java.util.Locale;
进口java.text.DateFormat;

公共类DateExample9(

公共静态无效的主要(字串[] args)(
现场localeEN = Locale.US;
现场localeFrance = Locale.FRANCE;

TimeZone的timeZoneMiami = TimeZone.getDefault();
TimeZone的timeZoneParis = TimeZone.getTimeZone(“欧洲/巴黎”);

DateFormat dateFormatter = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
localeEN);
DateFormat dateFormatterParis = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
localeFrance);

日期curDate =新的日期();

System.out.println(“为迈阿密办事处展示。”);
/ /打印迈阿密时区显示名称中英文
System.out.println(timeZoneMiami.getDisplayName(localeEN));
/ /设置时区的dateFormatter到迈阿密时区。
dateFormatter.setTimeZone(timeZoneMiami);
/ /打印格式的日期。
System.out.println(dateFormatter.format(curDate));

/ /设置时区的日期格式化到巴黎的时区。
dateFormatter.setTimeZone(timeZoneParis);
/ /打印巴黎时区英文显示的名称。
System.out.println(timeZoneParis.getDisplayName(localeEN));
/ /打印中英文巴黎时间。
System.out.println(dateFormatter.format(curDate));

System.out.println(“巴黎的办公室\ nDisplay。”);
/ /打印迈阿密时区显示名称法语
System.out.println(timeZoneMiami.getDisplayName(localeFrance));
/ /设置时区的
/ / DateFormatterParis到迈阿密时区。
dateFormatterParis.setTimeZone(timeZoneMiami);
/ /打印在法国格式化日期。
销毁ystem.out.println(dateFormatterParis.format(curDate));

/ /设置时区的日期格式化到巴黎的时区。
dateFormatterParis.setTimeZone(timeZoneParis);
/ /打印在法国巴黎的时区显示名称。
System.out.println(timeZoneParis.getDisplayName(localeFrance));
/ /打印在法国巴黎时间。
System.out.println(dateFormatterParis.format(curDate));



这个例子的输出是:
显示迈阿密办事处。
东部标准时间
星期五,2001年10月5日美国东部时间下午10时28分02秒
中欧标准时间
星期六,2001年10月6日上午04时28分02秒欧夏令时
显示巴黎办事处。
格林尼- 05:00
2001年10月在vendredi 5 22小时28日格林尼治标准时间04:00
格林尼治标准时间+01:00
2001年10月在萨梅迪6 04 Ĥ 28 +02:00



在SQL 数据库中的数据保存日期和提取
我们将使用下一个类是java.sql.Date,这是一个java.util.Date的子类的,但它使用了Java 数据库连接(JDBC)方法



。 让我们看一个简单的表格上只有一个 - LAST_ACCESS Oracle数据库,则创建以下SQL:
创建表LAST_ACCESS(
LAST_HIT日期
);
只有一个记录本表格,并插入下面的语句来创建:
插入LAST_ACCESS值(Sysdate);
表E演示了如何修改和提取域LAST_HIT数据库。

表E



进口java.sql .*;
进口java.text.DateFormat;
进口是java.util.Date;

公共类DateExample10(

公共静态无效的主要(字串[] args)(
/ /获得一个完整的日期格式化。
DateFormat dateFormatter = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL);
/ /获取系统日期和时间。
java.util.Date的utilDate =新的日期();
/ /转换为java.sql.Date
java.sql.Date日期=新java.sql.Date(utilDate.getTime());
/ /显示的日期之前存储。
System.out.println(dateFormatter.format(日期));
/ /保存日期到数据库。
setLastHit(日期);
/ /从数据库中获取的日期。
日期dateFromDB = getLastHit();
/ /显示从数据库中的日期。
System.out.println(dateFormatter.format(dateFromDB));


公共静态无效setLastHit(java.sql.Date日期)(

尝试(
/ /加载类。
调用Class.forName(“oracle.jdbc.driver.OracleDriver”);
/ /获取一个连接。
热onnection连接= DriverManager.getConnection(
/ /数据库URL
“的jdbc:神谕:薄:@本地主机:1521:buzz2”
“web_site”,/ /用户名
“web_site”); / /密码
尝试(
/获取一份声明中其外连接
/ /指定更新的SQL。
PreparedStatement的皮秒= connection.prepareStatement(
“更新LAST_ACCESS设置LAST_HIT =”);
尝试(
/设置日期让JDBC技术的工作
/ /格式化的SQL适当。
ps.setDate(1,日期);
/ /执行的更新语句。
诠释iRowsUpdated = ps.executeUpdate();
System.out.println(“行更新时间:”+ iRowsUpdated);
)最后(
ps.close();

)最后(
connection.close();

)捕捉(异常前)(
System.out.println(“错误:”+ ex.getMessage());



公共静态java.sql.Date getLastHit()(
java.sql.Date returnDate =无效;

尝试(
/ /加载驱动程序类。
调用Class.forName(“oracle.jdbc.driver.OracleDriver”);
/ /获取连接。
连接连接= DriverManager.getConnection(
“的jdbc:神谕:薄:@本地主机:1521:buzz2”
“web_site”,“web_site”);
尝试(
/获取指定的准备好的语句
/ /选择SQL。
PreparedStatement的皮秒= connection.prepareStatement(
“选择LAST_HIT从LAST_ACCESS”);
尝试(
/ /执行SQL和获得的ResultSet对象。
ResultSet的遥感= ps.executeQuery();
尝试(
/ / Retreive纪录。
如果(rs.next())(
/ /返回日期的最后打击。
returnDate = rs.getDate(“LAST_HIT”);
System.out.println(
“成功检索上次发生。”);
)其他(
销毁ystem.out.println(“未获得最后的冲击。”);


最后(
,2();


)最后(
ps.close();

)最后(
connection.close();

)捕捉(异常前)(
System.out.println(“错误:”+ ex.getMessage());

返回returnDate;




这个例子的输出如下:
星期五,2001年10月5日美国东部时间下午10时42分34秒
行更新:1
成功地检索到最后的冲击。
星期五,2001年10月5日美国东部时间上午12时00分00秒
虽然这个例子是没有的性能数据保存和提取日期提供了一个极好的方法,但它确实表明了如何更新和删除一个Java的SQL语句的日期数据到数据的日期。 java.util.Date的数据从Oracle日期字段对象是用下面的语句处理过程:
ps.setDate(1,日期);
这是一个方法java.sql.PreparedStatement.setDate接口预先确定的发言。
行代码,在我们在setLastHit方式出现。 这将是Java到微秒长整型日期值到SQL ORACLE的日期格式。 当我们可以使用从数据库java.sql.PreparedStatement.getDate数据getLastHit方法获得的时间来完成这种转换的日期。
您还应该指出的是,迄今已成立只。 小时,分钟,秒和微秒不包括在从Java日期数据到SQL日期数据转换过程。
结论
在你掌握了这些概念,你应该能够基于时间的系统或一时间进入该对象的创建日期。 此外,你应该能够使用标准和定制的数据格式化过程格式化日期,文本数据到一个日期对象分析和多语种,多的时区数据的日期显示的日期。 最后,您将可以节省一个SQL数据库和提取日期值。

你可能感兴趣的:(Java,HTML,SQL,Oracle,JDBC)