`
cuixuxucui
  • 浏览: 350820 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex Date对象与UTC之间的关系

 
阅读更多

转自 Flex Date对象与UTC之间的关系

http://blog.163.com/cui_zhouyang/blog/static/703397212009624210044/

 

Date对象存储日期和时间,本来十分简单,并无大书特书之必要。不过,如果考虑了时区问题,那么小小的Date对象同样蕴藏着玄机。

 

何谓时区问题呢?如果你对时区这个词比较陌生,那么你是否听说过“倒时差”呢?比如,从北京飞到华盛顿,那么也许你要面临的第一个痛苦的问题就是“倒时差”。话说,北京在东八时区,而华盛顿在西五时区,两地的时间差是13个小时。也就是说,北京的晚上10点正好是华盛顿同一天的早上9点钟。(如果是美国夏时制的话,那么相差12个小时,美国的时间老复杂了,我也闹不明白。很惭愧的说,俺打小就在天朝呆着,至今还没有出过国门呢,完全没有倒时差的机会哈^_^。在下面的讨论中,也将忽略美国夏时制)。

 

现在我们明白了同一时间点在不同时区的显示是完全不同的,那么Date对象是如何应付这个问题的呢?要弄明白这个问题,首先必须清楚Date对象的以下三个概念:

 

1.         本地时间(Local Time)

 

本地时间顾名思义就是你所在的时区的时间。像我身在北京,那么我的本地时间就是东八时区的时间。不过,前提条件是,你的系统时间与你本地的时间是一致的。说白了,Date对象不可能从我口里知道我身在北京,它只能从我的操作系统时区信息了解我的位置。所以,如果我修改了自己的系统时间,例如采用美国的西五时区,那么对Date对象而言,它就认为我的本地时间是西五时区的时间了。

 

现在是北京时间2008年10月16日晚上9点31分42秒,如果你想生成一个Date对象反映当前的时间,那简直太容易了,一个不带任何参数的构造函数就可以办到:

 

var date:Date = new Date();

 

如果你不太关心分钟和秒钟,希望生成的Date时间中这两个值都置零,那么你可以这样做:

 

var date:Date = new Date(2008, 9, 16, 21);

 

注意了,今天是10月16日,但是传给构造函数的第二个参数却是9。这是因为Date对象中一月份用数字0表示,以此类推,10月份就应该是数字9了。同样,你要得到当前的日期和时间:

 

var str:String = date.toLocaleString();

 

str字符串的返回值是:“Thu Oct 16 2008 09:31:42 PM”。

 

2.         协调世界时(UTC Time)

 

协调世界时等同于零时区的时间。零时区包括以本初子午线为基准,东西经度各为7.5°范围内的地区。Date对象中任何关乎UTC Time的属性或者方法,它们的名字中都包含了字段“UTC”,因此非常容易辨识。想知道北京时间2008年10月16日晚上9点31分42,用世界时间表示是几点几分吗?

 

var str:String = date.toUTCString();

 

str字符串的返回值是:“Thu Oct 16 13:31:42 2008 UTC”。没错,零时区比北京时间早了8小时。

 

3.         时区差(timezoneOffset)

 

Date对象不仅储存了日期和时间信息,更储存了时区信息。Date对象的timezoneOffset属性,反映了你的本地时间和协调世界时之间相差多少分钟。这个属性值是只读的,它是由系统时间决定的。我的电脑上生成的Date对象,它们的timezoneOffset属性值一律是-480,这说明了北京时间晚于零时区时间480分钟。

 

如果,你希望通过一个字符串生成一个Date对象,那么请记住,这个字符串中最好带有时区信息,否则的话,生成的Date可能不是你期望的时间。例如,我修改了自己的系统时区为西五时区,这样的话,“Thu Oct 16 2008 09:31:42 PM”生成的Date对象将不再代表北京时间2008年10月16日晚上9点31分42秒,而只是华盛顿时间2008年10月16日晚上9点31分42秒。不过,如果字符串中包含了时区信息GMT+0800,“Thu Oct 16 2008 09:31:42 PM GMT+0800”,那么不论在任何情况下,生成的Date对象都将代表北京时间2008年10月16日晚上9点31分42秒。在将Date对象转换成字符串时,如果希望保留时区信息,那么请使用:

 

var str:String = date.toString();

 

说了这么多,相信你对时区一定有了更好的认识。是的,Date真的很简单,如果我们在使用和转换Date的时候,考虑了时区问题可能产生的影响,那就更好了。最后,我想推荐你在将Date对象转换成字符串时,请使用toString()方法,因为,它会一丝不苟的记录下时区信息。

 

 

 

UTC时间 = 本地时间 + 差值.

分享到:
评论

相关推荐

    flexdate.zip

    Flexdate是一款高效、轻量级的时间处理插件,主要针对JavaScript环境设计,旨在提供便捷的日期和时间操作功能。在Web开发中,处理日期和时间往往是一项常见的任务,而Flexdate正是为此目的而诞生的。它能够帮助...

    SWF之间通信、Flex与SWF之间通信

    ### SWF之间通信、Flex与SWF之间通信 在探讨SWF之间以及Flex与SWF之间的通信时,我们首先需要了解SWF文件的基本概念及其在Adobe Flash平台中的作用。SWF(Shockwave Flash)是一种被广泛应用于网页动画、游戏和其他...

    Flex与Servlet之间数据的交互

    Flex与Servlet之间的数据交互是JavaWeb开发中的一个重要环节,它涉及到客户端富互联网应用程序(RIA)与服务器端数据处理的协同工作。Flex作为一个基于Adobe Flash Player的前端开发框架,主要用于创建具有丰富用户...

    了解 flex State对象

    Flex State对象是Adobe Flex框架中的一个关键特性,它允许开发者管理应用程序的不同视图或界面状态。在Flex程序中,状态设计是一种强大的工具,用于根据用户的交互和应用需求动态地改变UI布局和组件行为。通过使用...

    Flex与java通讯

    Flex与Java之间的通信是开发富互联网应用程序(RIA)时经常遇到的一个重要技术问题。Flex作为Adobe推出的基于ActionScript的开放源代码框架,主要用于构建交互性强的用户界面,而Java则是一种广泛使用的后端开发语言...

    Flex 对象调用之间的 数据传递 包括 页面调用之间的数据传递 -

    Flex对象之间的数据传递,包括页面调用之间的数据传递,是Flex开发中的关键概念,它涉及组件通信、事件处理和应用程序状态管理。下面将详细探讨这一主题。 首先,我们来看Flex对象间的通信。在Flex应用中,组件可以...

    flex DataTimePicker时间控件

    在IT行业中,尤其是在Web开发领域,用户界面(UI)的设计与交互是至关重要的。"flex DataTimePicker时间控件"是一个专为Adobe Flex平台设计的组件,用于帮助用户方便地选择日期和时间。Flex是一个开放源代码的框架,...

    Flex与.NET交互

    这些代码片段可以帮助开发者更好地理解和实现Flex与.NET之间的对象交互。 总结来说,Flex与.NET的交互通过FluorineFx等工具实现,使得富互联网应用可以充分利用.NET的后端能力,同时提供了高效的数据传输方式,支持...

    flex与socket之间的通信

    Flex与Socket之间的通信是Web应用中一种常见的实时数据交互方式,尤其在开发在线聊天功能时。Flex是一款基于Adobe Flash Player的开发框架,用于构建富互联网应用程序(RIA)。Socket,也称为套接字,是网络编程中的...

    Flex几何对象生成泰森多边形

    总的来说,利用SuperMap iClient Flex进行泰森多边形分析,不仅可以帮助我们理解地理空间关系,还能在城市规划、环境影响评估、资源分配等多个领域提供有价值的分析结果。通过深入学习和实践,开发者可以掌握这一...

    flex访问java对象

    根据给定的信息,本文将详细解释如何通过Flex访问Java对象,并提供一个具体示例来帮助理解整个过程。本文主要分为以下几个部分:环境搭建、Java类编写、配置文件编写、Flex应用编写以及最终运行效果。 ### 一、环境...

    flex与java通信

    Flex和Java之间的通信是Web应用程序开发中的一个重要环节,它允许前端用户界面(UI)与后端服务器进行数据交互。Flex是一种基于Adobe Flash Player或Adobe AIR运行时的富互联网应用程序(RIA)开发框架,而Java则是...

    Flex学习—关于Shareobject对象(本地共享对象)

    本文将深入探讨Flex中的一个重要组件——ShareObject,也称为本地共享对象,它允许应用程序在用户计算机上存储数据,实现数据的持久化。 ShareObject是Flex提供的一种轻量级的数据存储解决方案,它类似于Web浏览器...

    flex flex和 java交互

    标题"flex 和 java交互"指出了一个关键的技术融合,即Flex与Java的整合,允许Flex前端与Java后端进行数据和功能的通信。这种交互通常是通过AMF(Action Message Format)协议实现的,它提供了一种高效的数据序列化...

    flex远程对象调用,flex和spring的集成,分页

    标题中的“flex远程对象调用”指的是Flex应用程序与服务器端应用进行通信的一种技术。Flex作为客户端的富互联网应用(RIA)框架,可以使用Remote Object(RO)服务来调用服务器上的业务逻辑,实现数据的交互。远程...

    flex blazeds 传递对象实例

    本文将深入探讨“Flex BlazDS 传递对象实例”这一主题,这涉及到Flex客户端与BlazeDS服务器之间的数据交互。 Flex是一种开源的、基于ActionScript的框架,用于创建具有动态用户界面的RIA。它主要用在Adobe Flash ...

    Flex3与flex4的区别

    标题和描述都聚焦于对比Flex3与Flex4之间的差异,这是一种Adobe系统提供的开源框架,用于构建跨平台的桌面和移动应用程序。Flex4,其代号为Gumbo,是在Flex3的基础上进行了重大升级,旨在改进用户体验和开发效率。...

    Flex类图和与Java交互时类型转换对照.rar

    类图是表示类和类之间关系的图形表示法,它在Flex和Java交互时的作用是帮助开发者清晰地理解数据结构和转换规则。例如,类图可以展示Flex中的ActionScript类如何映射到Java的类,以及它们之间的属性和方法如何对应。...

    Flex3与Flex4对比

    本文旨在详细介绍Flex3与Flex4之间的主要区别,特别是Flex4相较于Flex3的新功能与改进之处。通过对比分析,帮助开发者更好地理解两者之间的差异,从而根据项目需求选择最适合的技术栈。 #### 二、功能区别 ##### 1...

    Flex与Java实现通信

    而Java作为后端开发的主要语言之一,如何实现Flex与Java之间的高效通信成为了一个重要的课题。本文将详细介绍如何使用BlazeDS这一基于服务器的技术来实现Java和Flex之间的通信。 #### 二、BlazeDS简介 BlazeDS是一...

Global site tag (gtag.js) - Google Analytics