转载自:http://www.cnblogs.com/mailingfeng/archive/2012/06/20/2556326.html
TimeZone对象给我们的是原始的偏移量,也就是与GMT相差的微秒数,Java的Date对象里面存储着当前时刻到1970年1月1日0:00所经过的毫秒数,它与时区和地域没有关系(其实可以认为是GMT时间吧).而且还会告诉我们这个时区是否使用夏令时。有个这个信息,我们就能够继续将时区对象和日期格式化器结合在一起在其它的时区和其它的语言显示时间了。
国际化的时期显示了时区转换
让我们来看一个结合了国际化显示,时区和日期格式化的例子。表D为一个在迈阿密和巴黎拥有办公室的公司显示了当前的完整日期和时间。对于迈阿密的办公室,我们将在每个办公室里用英语显示完整的日期和时间。对于巴黎的办公室,我们将用法语显示完整的当前日期和时间。
import java.util.TimeZone;
import java.util.Date;
import java.util.Locale;
import java.text.DateFormat;
public class DateExample9 {
public static void main(String[] args) {
Locale localeEN = Locale.US;
Locale localeFrance = Locale.FRANCE;
TimeZone timeZoneMiami = TimeZone.getDefault();
TimeZone timeZoneParis = TimeZone.getTimeZone("Europe/Paris");
DateFormat dateFormatter = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
localeEN);
DateFormat dateFormatterParis = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL,
localeFrance);
Date curDate = new Date(); //以GMT格式记录当前计算机时间
System.out.println("Display for Miami office.");
// 显示"迈阿密时区"的英文格式显示名
System.out.println(timeZoneMiami.getDisplayName(localeEN));
// 配置美国本地日期格式化器的时区为"迈阿密时区(本地时区-美国)"
dateFormatter.setTimeZone(timeZoneMiami);
// 输出格式化的日期字符, 这时把当前GMT时间输出为"迈阿密所在时区"的时间
System.out.println(dateFormatter.format(curDate));
// 配置日期格式化器Format的时区为"巴黎的时区"
dateFormatter.setTimeZone(timeZoneParis);
// 输出"巴黎所在时区"的英文显示名
System.out.println(timeZoneParis.getDisplayName(localeEN));
// 输出当前GMT时间表现为"巴黎时区"下的时间
System.out.println(dateFormatter.format(curDate));
System.out.println("\nDisplay for Paris office.");
// 输出"迈阿密所在时区"的法文显示名
System.out.println(timeZoneMiami.getDisplayName(localeFrance));
// Set the timezone of the
// 配置巴黎本地日期格式化器的时区为"迈阿密所在时区"
dateFormatterParis.setTimeZone(timeZoneMiami);
// 把当前GMT时间用法文格式输出为"迈阿密所在时区"的时间
system.out.println(dateFormatterParis.format(curDate));
// 配置巴黎本地日期格式化器的时区为"巴黎所在的时区"
dateFormatterParis.setTimeZone(timeZoneParis);
// 输出"巴黎所在时区"的法文格式显示名
System.out.println(timeZoneParis.getDisplayName(localeFrance));
//
//当前GMT时间用法文格式输出为"巴黎所在时区"的时间 System.out.println(dateFormatterParis.format(curDate));
}
}
结果输出是:
Display for Miami office.
Eastern Standard Time
Friday, October 5, 2001 10:28:02 PM EDT
Central European Standard Time
Saturday, October 6, 2001 4:28:02 AM CEST
Display for Paris office.
GMT-05:00
vendredi 5 octobre 2001 22 h 28 GMT-04:00
GMT+01:00
samedi 6 octobre 2001 04 h 28 GMT+02:00
由上面例子可以知道:
1. 计算机内部记录的时间(Date date = new Date()), 为格林威治标准时(GMT). 即java.util.Date代表一个时间点,其值为距公元1970年1月1日 00:00:00的毫秒数。所以它可以认为是没有时区和Locale概念的。
2. 日期格式化类DateFormat, 对于不同地区的配置一般有两个点, 一个是Locale , 一个是TimeZone
前者(Locale)使DateFormat按所配置的地区特性来输出文字(例如中国,美国,法国不同地区对日期的表示格式不一样,中国可能是2001年10月5日)
后者(TimeZone)让DateFormat知道怎么去转换,去调整时间偏移度,从而得到符合配置的时区的时间.
(即假设取得当前时间(假设当前时区为GMT+0,即与new Date()最后转换的时间毫秒数一致)为2:00, 那么如果你配置DateFormat.setTimeZome("GMT+8"), 即北京时间的时区, 那么这时候格式化输出的就是10:00了, 因为系统对原始毫秒数进行了时间偏移调整(调到你设置的时区),即加多8小时,之后再格式化输出日期的字符串形式)
3. GMT与UTC的时区是一样的,都是以伦敦时间为基准. 而GMT+8时区就是北京时间所在时区.同一时刻的时间比GMT快8小时.
分享到:
相关推荐
前端项目-jquery-dateFormat,它是一个jquery插件,用于使用javascript格式化日期输出。
jquery-dateFormat, 使用JavaScript格式化日期输出的jQuery插件 使用JavaScript格式输出日期输出的jQuery dateformat插件- 拥有的,jQuery是最小的日期格式库。 ! 安装下载最新的jquery.dateFormat.js 或者 jquery....
dateformat - 一个优秀的node.js日期格化包
sql取日期格式中的年月天时分秒 sql取日期格式中的年月天时分秒
日期格式 Steven Levithan出色的函数的node.... var dateFormat = require ( "dateformat" ) ; var now = new Date ( ) ; // Basic usage dateFormat ( now , "dddd, mmmm dS, yyyy, h:MM:ss TT" ) ; // Saturday, June
java代码-使用java解决比较日期,Date类DateFormat类的源代码 ——学习参考资料:仅用于个人学习使用!
java 使用DateFormat类获取系统的当前时间 java 使用DateFormat类获取系统的当前时间
js代码-dateFormat
2. 解析指定时间 public static ZonedDateTime parse(String date,String dateFormat,int offset) 3. 获取某一天的零点 public static ZonedDateTime getTodayZonedDayBegin(int offset) 4. 指定某一天的零点 public...
sparkar-dateformat 修补程序脚本,用于Spark AR Studio的日期格式。安装下载zip文件,解压缩并导入dateformat.js作为Spark AR项目的资产。用法以下是您必须为脚本定义的补丁输入/输出。从脚本date 描述:您从脚本...
NULL 博文链接:https://bert82503.iteye.com/blog/2106022
本Java精华内容深入Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及...
Java中DateFormat类.pdf 学习资料 复习资料 教学资源
在 Java 语言中,日期操作类是非常重要的一部分,常用的日期操作类有 Date 类、Calendar 类和 DateFormat 类。下面是对这三个类的详细介绍: Date 类 Date 类是 Java 语言中最基本的日期操作类,位于 java.util ...
1 JAVA SE 1.1 深入JAVA API 1.1.1 Lang包 1.1.2 集合类 1.1.2.1.1 日期类Date 1.1.2.1.2 日历类Calendar 1.1.2.1.3 随机数类Random 1.1.2.1.4 向量类Vector 1.1.2.1.5 栈类Stack 1.1.2.1.6 哈希表类Hashtable ...
yyyy-MM-dd形式 js timeformat dateformat
史蒂夫:时刻日期格式 一个简单的全局模板助手,用于使用 momentjs 格式化日期 用法 {{dateFormat someDate}} 选项 {{dateFormat someDate format="MMM DD, YYYY hh:mm:ss A"}}
调用该类中的方法,实现字符串于日期类型之间的转换,以及包括数据库中的日期类型,避免了代码的重复.
正确使用各种Java运算符,如一元运算符,算术运算符,关系运算符,逻辑运算符,条件运算符和赋值运算符等。 辨别使用if,if…else,switch选择结构执行不同的动作。 辨别使用while,for,do…...