`

关于时区的知识

阅读更多
GMT和PST--关于时区的知识

1、概念和换算
2、日期中的时区标志
3、在Oracle 9i中正确转换时区
4、redhat9终端方式下更改时区
5、java下的时区......
GMT和PST--关于时区的知识

我们在网上浏览,在虚拟时空漫游世界时,经常会遇到时区的困扰,这篇文章是什么时间发布的?邮件是什么时间发出的?GMT和PST各代表什么意思,如何换算?等等.
我通过互联网搜集了一些小知识,供大家参考。

1、概念和换算
PST - 美国太平洋标准时间
GMT 格林威治标准时间


几个换算公式,因为是24进制,看起来有点怪:
(GMT +8)-16 =PST
PST+7 = GMT
PST+16 = GMT + 8(中国)

我们是东八区,加州是西八区,中间差16个小时。

2、关于日期中的时区标志。

由于都在互联网上,大家在各个时区的事件表示有所不同,因此日期要转换到当前时区的日期和时间,在互联网上,大家一般都用CTS(世界标准时间)有称作GMT(格林尼治时间)。
譬如日期时间为:Sat, 30 Mar 2002 13:27:08 -0800,我们当前所在的时区为正8区(北京时间),则用我们所在时区表示就是 Sat, 30 Mar 2002 29(13+16):27:08 即Sun, 31 Mar 2002 6:27:08 +8000。 ---??
目前存在的时区有:
GMT 格林威治标准时间 GMT
UTC 全球标准时间 GMT
ECT 欧洲中部时间 GMT+1:00
EET 东欧时间 GMT+2:00
ART (阿拉伯)埃及标准时间 GMT+2:00
EAT 东非时间 GMT+3:00
MET 中东时间 GMT+3:30
NET 近东时间 GMT+4:00
PLT 巴基斯坦拉合尔时间 GMT+5:00
IST 印度标准时间 GMT+5:30
BST 孟加拉国标准时间 GMT+6:00
VST 越南标准时间 GMT+7:00
CTT 中国台湾时间 GMT+8:00
JST 日本标准时间 GMT+9:00
ACT 澳大利亚中部时间 GMT+9:30
AET 澳大利亚东部时间 GMT+10:00
SST 所罗门标准时间 GMT+11:00
NST 新西兰标准时间 GMT+12:00
MIT 中途岛时间 GMT-11:00
HST 夏威夷标准时间 GMT-10:00
AST 阿拉斯加标准时间 GMT-9:00
PST 太平洋标准时间 GMT-8:00
PNT 菲尼克斯标准时间 GMT-7:00
MST 西部山脉标准时间 GMT-7:00
CST 中部标准时间 GMT-6:00
EST 东部标准时间 GMT-5:00
IET 印第安那东部标准时间 GMT-5:00
PRT 波多黎各和美属维尔京群岛时间 GMT-4:00
CNT 加拿大纽芬兰时间 GMT-3:30
AGT 阿根廷标准时间 GMT-3:00
BET 巴西东部时间 GMT-3:00
CAT 中非时间 GMT-1:00

3、教你怎样在Oracle 9i中正确转换时区

在Oracle9i之前,虽然有一个NEW_TIME函数可以改变DATE的时间戳部分,但是还没有专门用来存储时区信息的数据类型。在Oracle9i 中,我们可以使用DBTIMEZONE伪字段查询数据库的时区,使用SESSIONTIMEZONE伪字段查询会话的时区。
但是,对于大多数数据库,这些值都是-07:00之类的偏移值,因此对于NEW_TIME函数是没有用的。Oracle9i有关NEW_TIME的文档建议使用FROM_TZ来替代,但是这可能会产生误导。FROM_TZ只将一个时区应用到一个时间戳上;它并不能把一个时区转换成另外一个时区。
其实有一个比较好的方法(从文档中得到这个方法可能有点难)。首先,为了完成这个工作,在正确的时区内需要一个TIMESTAMP WITH ZONE数据类型。然后,如果你将关键字AT TIME ZONE应用到那个值,它就会自动地调整为新的时区和日期。
  select (timestamp ';2003-04-06 01:59:59'; at time zone ';PDT';) at time zone ';GMT';   from dual;
  06-APR-03 08.59.59.00000000 AM GMT

这个语句将为太平洋白天时间(即其切换到PST之前的时刻)构造一个TIMESTAMP WITH TIME ZONE然后再将其转换到GMT。AT TIME ZONE关键字也接受默认的偏移值语法:
  select (timestamp ';2003-04-06 02:00:00'; at time zone ';-07:00';) at time zone   ';00:00'; from dual;
  06-APR-03 09.00.00.000000000 AM +00:00  
你还可以使用伪字段来自动调整当前会话的时区:
     select current_timestamp at time zone dbtimezone from dual;
上面的表达式返回一个当前会话的本地时间(数据类型为时区),重新调整数据库的时区,调整后的时区将与SYSTIMESTAMP的结果相等。有了以上的这些信息,就可以构造一个比较好的NEW_TIME函数:
    create or replace function my_new_time (p_dwtz timestamp with time zone,     p_tz varchar2   ) return date is
  begin
    return cast(p_dwtz at time zone p_tz as date);   
end
my_new_time;
/
show errors;
select my_new_time(sysdate,';+08:00';) from dual;
即使第一个参数被标记为一个timestamp with time zone,你依然可以传入一个TIMESTAMP和DATE,这样由于Oracle的自动转型操作,得到的时间将是会话在本地时区的当前时间。这个函数接受包括偏移值在内的任何可以被TIMESTAMP识别的时区,然后将接受的时区调整为正确的值。
分享到:
评论
2 楼 huangtut 2008-11-06  
常用的几个时区:
GMT:Greenwich Mean Time
ET:U.S. Eastern Time -5
PST:Pacific Standard Time -8

GMT -11:00 Samoa
GMT -10:00 U.S. Hawaiian Time
GMT -09:30 Marquesas
GMT -09:00 U.S. Alaska Time
GMT -08:30 Pitcarn
GMT -08:00 Pacific Time
GMT -07:00 U.S. Mountain Time
GMT -07:00 U.S. Mountain Time (Arizona)
GMT -06:00 U.S. Central Time
GMT -06:00 Mexico
GMT -05:00 U.S. Eastern Time
GMT -05:00 U.S. Eastern Time (Indiana)
GMT -05:00 Columbia, Peru, South America
GMT -04:00 Atlantic Time
GMT -03:30 Newfoundland, Canada
GMT -03:00 Argentina
GMT -03:00 Brazil
GMT -02:00 Mid-Atlantic
GMT -01:00 Azores
GMT U.K., Spain
GMT +01:00 Western Europe
GMT +02:00 Eastern Europe
GMT +02:00 Egypt
GMT +02:00 Israel
GMT +03:00 Russia
GMT +03:00 Saudi Arabia
GMT +03:30 Iran
GMT +04:00 Arabian
GMT +04:30 Afghanistan
GMT +05:00 Pakistan, West Asia
GMT +05:30 India
GMT +06:00 Bangladesh, Central Asia
GMT +06:30 Burma
GMT +07:00 Bangkok, Hanoi, Jakarta
GMT +08:00 China, Taiwan
GMT +08:00 Singapore
GMT +08:00 Australia (WT)
GMT +09:00 Japan
GMT +09:00 Korea
GMT +09:30 Australia (CT)
GMT +10:00 Australia (ET)
GMT +10:30 Australia (Lord Howe)
GMT +11:00 Central Pacific
GMT +11:30 Norfolk Islands
GMT +12:00 Fiji, New Zealand

6、JAVA中的时区
java.util 类 TimeZone
java.lang.Object
继承者 java.util.TimeZone
所有已实现的接口:

Serializable, Cloneable

直接已知子类:
SimpleTimeZone

public abstract class TimeZone
extends Object
implements Serializable, Cloneable

TimeZone 表示时区偏移量,也可以计算夏令时。

通常,使用 getDefault 获得 TimeZone,getDefault 基于程序运行所在的时区创建 TimeZone。例如,对于在日本运行的程序,getDefault 基于日本标准时间创建 TimeZone 对象。

也可以用 getTimeZone 及时区 ID 获取 TimeZone 。例如美国太平洋时区的时区 ID 是 "America/Los_Angeles"。因此,可以使用下面语句获得美国太平洋时间 TimeZone 对象:
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
可以使用 getAvailableIDs 方法来对所有受支持的时区 ID 进行迭代。可以选择受支持的 ID 来获得 TimeZone。如果想要的时区无法用受支持的 ID 之一表示,那么可以指定自定义时区 ID 来生成 TimeZone。自定义时区 ID 的语法是:
CustomID: GMT Sign Hours : Minutes
GMT Sign Hours Minutes
GMT Sign Hours
Sign: 下面之一
+ -
Hours:
Digit
Digit Digit
Minutes:
Digit Digit
Digit: 下面之一
0 1 2 3 4 5 6 7 8 9

Hours 必须在 0 至 23 之间,Minutes 必须在 00 至 59 之间。例如,"GMT+10" 和 "GMT+0010" 分别意味着比 GMT 提前 10 小时和 10 分钟。

格式是与区域无关的,并且数字必须取自 Unicode 标准的 Basic Latin 块。没有夏令时转换安排可以用自定义时区 ID 指定。如果指定的字符串与语法不匹配,就使用 "GMT"。

当创建一个 TimeZone 时,指定的自定义时区 ID 采用下面的语法进行标准化:

NormalizedCustomID:
GMT Sign TwoDigitHours : Minutes
Sign: 下面之一
+ -
TwoDigitHours:
Digit Digit
Minutes:
Digit Digit
Digit: 下面之一
0 1 2 3 4 5 6 7 8 9


例如,TimeZone.getTimeZone("GMT-8").getID() 返回 "GMT-08:00"。
关于三字母时区 ID

为了与 JDK 1.1.x 兼容,一些三字母时区 ID(比如 "PST"、"CTT"、"AST")也受支持。但是,它们的使用被废弃,这是因为相同的缩写经常用于多个时区(例如,"CST" 可以是美国的 "Central Standard Time" 和 "China Standard Time"),但是 Java 平台只可以识别其中一种。
1 楼 huangtut 2008-11-06  
4、Oracle/Sqlserver中的日期函数(节选)
(35).系统时间
S:select getdate() value
O:select sysdate value from dual
(36).前后几日
直接与整数相加减
(37).求日期
S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from dual
select to_char(sysdate,'yyyy-mm-dd') value from dual
(38).求时间
S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from dual
(39).取日期时间的其他部分
S:DATEPART 和 DATENAME 函数 (第一个参数决定)
O:to_char函数 第二个参数决定
参数---------------------------------下表需要补充
year yy, yyyy
quarter qq, q (季度)
month mm, m (m O无效)
dayofyear dy, y (O表星期)
day dd, d (d O无效)
week wk, ww (wk O无效)
weekday dw (O不清楚)
Hour hh,hh12,hh24 (hh12,hh24 S无效)
minute mi, n (n O无效)
second ss, s (s O无效)
millisecond ms (O无效)
----------------------------------------------
(40).当月最后一天
S:不知道
O:select LAST_DAY(sysdate) value from dual
(41).本星期的某一天(比如星期日)
S:不知道
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
(42).字符串转时间
S:可以直接转或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
(43).求两日期某一部分的差(比如秒)
S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用两个日期相减(比如d1-d2=12.3)
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
(44).根据差值求新的日期(比如分钟)
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;
(45).求不同时区时间
S:不知道
O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
-----时区参数,北京在东8区应该是Ydt-------
AST ADT 大西洋标准时间
BST BDT 白令海标准时间
CST CDT 中部标准时间
EST EDT 东部标准时间
GMT 格林尼治标准时间
HST HDT 阿拉斯加 夏威夷标准时间
MST MDT 山区标准时间
NST 纽芬兰标准时间
PST PDT 太平洋标准时间
YST YDT YUKON标准时间

5、redhat9终端方式下更改时区
偶曾经问过的问题现在仍有兄弟在问特整理了一下
由于redhat9不能象以前那样配置时区。经常会出现错误
没图形界面!

/usr/sbin/timeconfig
错误如下
......
用 redhat-config-time 要求有xwin :redhat-config-date requires a currently running X server.

所以更改时区可以使用 tzselect這个指令,來修改你的时区
当然你也可不用命令,如果习惯文件修改的话
可修改/etc/sysconfig/clock
ZONE=Asia/Shanghai ( 查/usr/share/zoneinfo 下面的文件。 )
UTC=false ( 硬件时钟是否为 UTC 或者说 GMT 时钟。 )
ARC=false (如果是在 Alpha 机器上,则设置为 true 。 )
(把硬件时钟设置为 UTC 的好处就是他能自动设置夏时制,缺点时,在安装有多重操作系统启动的机器上,在另外的操作系统上时钟会错误。 )
根据自己的需要选你所在时区后,然后
rm /etc/localtime
是以上海为例的哦
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
重起机器后时区就改变了 。
如果你在某些应用下面的时间是错误的,那么你在运行 Red Hat Linux 5.0 或 5.1,解决的办法是建立 /usr/lib/zoneinfo 到 /usr/share/zoneinfo 的符号连接:
ln -s /usr/share/zoneinfo /usr/lib/zoneinfo

时区 与 UTC 的偏移量 描述
NZDT +13:00 新西兰白昼时间(夏时制)
IDLE +12:00 国际日期变更线,东边
NZST +12:00 新西兰标准时间
NZT +12:00 新西兰时间
AESST +11:00 澳大利亚东部标准夏时制
ACSST +10:30 中澳大利亚标准夏时制
CADT +10:30 中澳大利亚夏时制
SADT +10:30 南澳大利亚夏时制
AEST +10:00 澳大利亚东部标准时间
EAST +10:00 东澳大利亚标准时间
GST +10:00 关岛标准时间,(USSR Zone 9?)
LIGT +10:00 澳大利亚墨尔本
ACST +09:30 中澳大利亚标准时间
CAST +09:30 中澳大利亚标准时间
SAT +9:30 南澳大利亚标准时间
AWSST +9:00 澳大利亚西部标准夏时制
JST +9:00 日本标准时间,(USSR Zone 8)
KST +9:00 韩国标准时间
WDT +9:00 西澳大利亚夏时制
MT +8:30 毛里求斯时间(?)
AWST +8:00 澳大利亚西部标准时间
CCT +8:00 中国沿海时间
WADT +8:00 西澳大利亚夏时制
WST +8:00 西澳大利亚时间
JT +7:30 爪哇时间(译注:这里的 Java 可不是语言)
WAST +7:00 西澳大利亚标准时间
IT +3:30 伊朗时间
BT +3:00 巴格达时间
EETDST +3:00 东欧夏时制
CETDST +2:00 中欧夏时制
EET +2:00 东欧,(USSR Zone 1)
FWT +2:00 法国冬时制
IST +2:00 以色列标准时间
MEST +2:00 中欧夏时制
METDST +2:00 中欧白昼时间
SST +2:00 瑞典夏时制
BST +1:00 英国夏时制
CET +1:00 中欧时间
DNT +1:00 Dansk Normal Tid(?)
DST +1:00 Dansk Standard Time (?)
FST +1:00 法国夏时制
MET +1:00 中欧时间
MEWT +1:00 中欧冬时制
MEZ +1:00 中欧时区
NOR +1:00 挪威标准时间
SET +1:00 Seychelles Time(?)
SWT +1:00 瑞典冬时制
WETDST +1:00 西欧光照利用时间(夏时制)
GMT 0:00 格林威治平均时间
WET 0:00 西欧
WAT -1:00 西非时间
NDT -2:30 纽芬兰(新大陆)白昼时间
ADT -03:00 大西洋白昼时间
NFT -3:30 纽芬兰(新大陆)标准时间
NST -3:30 纽芬兰(新大陆)标准时间
AST -4:00 大西洋标准时间(加拿大)
EDT -4:00 东部白昼时间
ZP4 -4:00 GMT +4 小时
CDT -5:00 中部白昼时间
EST -5:00 东部标准时间
ZP5 -5:00 GMT +5 小时
CST -6:00 中部标准时间
MDT -6:00 山区白昼时间(译注:Mountain Daylight Time那位知道怎么译?)
ZP6 -6:00 GMT +6 小时
MST -7:00 山区标准时间
PDT -7:00 太平洋白昼时间
PST -8:00 太平洋标准时间
YDT -8:00 Yukon 白昼时间
HDT -9:00 夏威仪/阿拉斯加白昼时间
YST -9:00 Yukon 标准时间
AHST -10:00 夏威仪-阿拉斯加标准时间
CAT -10:00 中阿拉斯加时间
NT -11:00 州时间(Nome Time)
IDLW -12:00 国际日期变更线,西边

相关推荐

    openwrt知识总结(ntp时间同步+时区设置)

    OpenWRT 中的 NTP 时间同步和时区设置 OpenWRT 是一个基于 Linux 的嵌入式操作系统,广泛应用于路由器和其他嵌入式设备中。由于 OpenWRT 的广泛应用,因此设置正确的时间同步和时区变得非常重要。下面将详细介绍 ...

    java.util.TimeZone 的世界时区列表

    #### 二、重要概念与知识点 **1. 时区(TimeZone)** - **定义**:时区是指地球表面按照经度划分的一系列区域,每个区域采用特定的时间来调整日期和时间。 - **作用**:在国际间协调时间差异、进行时间转换时非常...

    时区基础知识PPT课件.pptx

    《时区基础知识》 在地球这个庞大的球体上,时间的流逝并非同步,这就引出了时区的概念。时区是地球表面被划分为24个区域,每个区域覆盖15个经度,用来协调和规范各地的时间。这些时区的划分基于地球自转,使得各地...

    java转换时区时间过程详解

    在本文中,我们将详细介绍时区的概念、UTC时间、格林尼治时间、夏令时、区时转换等知识点,并提供Java代码示例来实现时区时间转换。 一、时区概念 时区是指一个地区或国家的标准时间,可以是正时区也可以是负时区...

    时区基础知识学习教案.pptx

    时区基础知识学习教案.pptx

    时区基础知识PPT学习教案.pptx

    【时区基础知识】 时区是地球表面按照经度划分的时间区域,主要为了在全球范围内实现时间的统一和协调。这一概念对于通信、交通、金融等领域至关重要,确保了不同地区的人们可以准确地同步活动。时区的划分基于地球...

    Thinkpad蓝色时区壁纸多分辨率

    标签“1801”可能是对这套壁纸的内部编号或者版本标识,没有明确的IT知识含义,但可以理解为一种组织或分类方式。 压缩包子文件的文件名称列表“宽屏蓝色时区”暗示了这些壁纸是专为宽屏显示器设计的,进一步证实了...

    oracle19c升级时区版本 32->42,解决数据泵导数据TSTZ报错

    在Oracle数据库环境中,时区版本的更新是至关重要...了解这些知识点后,你可以更有效地管理和维护Oracle数据库,特别是在涉及时区转换和数据迁移的复杂操作时。同时,对于遇到的TSTZ类型报错,也能找到合适的解决方案。

    时区设置代码-一个完整的C++类

    本文将深入探讨“时区设置代码-一个完整的C++类”的相关知识点,包括`SetTimeZoneInformation`函数的使用、注册表操作以及如何在C++中实现这些功能。 `SetTimeZoneInformation`是Windows API提供的一个函数,用于...

    java时区问题

    `time.reg`文件很可能包含了关于用户计算机时区设置的注册表项,通常用于备份或恢复时区信息。但这个文件本身与Java编程语言无关,更多涉及操作系统层面。 在Java中处理时区问题时,有以下几个关键知识点: 1. **...

    JS世界时区时间代码.zip

    在JavaScript(JS)编程中,处理世界时区...以上就是关于“JS世界时区时间代码.zip”文件涉及的主要JavaScript时间和时区处理知识点。理解和掌握这些概念,能帮助开发者创建出能够适应全球用户的动态时区时间显示功能。

    多时区时钟的设计实现

    总的来说,多时区时钟的设计与实现融合了时间处理、用户界面设计、文件操作、音频播放以及后台服务等多个方面的技术知识。通过合理地组织和实现这些功能,可以创建出一个实用且用户友好的多时区时钟应用。

    世界时区与北京时间的时差表

    **描述解析:**描述部分为空,但我们可以推测这篇博文可能提供了关于如何理解、计算和管理全球不同时区与北京时间之间时差的详细信息。可能包括一个实用的工具或源代码,帮助开发者在程序中处理时间问题。 **标签...

    ios应用源码之获取全球当前所有时区的当前时间testtimezone 20181210

    在iOS开发中,获取全球不同时区的当前时间是一项常见的需求。这个名为"testtimezone 20181210"的项目提供了一个源码示例,...通过深入理解这些知识点,开发者能够更好地处理跨时区的时间操作,提高应用的国际化水平。

    Linux下时区与时间设置方法

    Linux系统中设置和管理时区与时间是一项基础而重要的任务,尤其是在多用户环境中,或者涉及到跨时区的网络服务。下面详细介绍Linux下时区与...通过学习和掌握相关知识,可以有效地避免时区和时间设置错误带来的问题。

    JS多个国家时区时间代码.zip

    JS处理时区时间通常涉及以下几个关键知识点: 1. **JavaScript Date对象**:JavaScript内置的Date对象是处理时间的基础,可以用来创建、操作和格式化日期和时间。例如,`new Date()`会创建一个表示当前时间的对象,...

    IOS应用源码——获取全球当前所有时区的当前时间TestTimeZone.zip

    `TimeZone`对象代表了一个特定的时区,它包含了关于夏令时规则、偏移量等信息。在iOS中,我们可以使用`TimeZone`的`knownTimeZoneIdentifiers`属性获取所有已知时区的标识符列表。这些标识符可以是如"Asia/Shanghai...

    24时区、GMT、UTC

    标题中的“24时区”、“GMT”和“UTC”都是与全球时间标准相关的概念,它们在信息技术领域,特别是网络通信、系统管理和日志记录中扮演着...通过学习和掌握这些知识,我们可以更好地理解和应对与时间相关的各种问题。

    centos修改时区1

    下面将详细介绍timedatectl命令的使用和时区设置的相关知识点。 timedatectl命令 timedatectl命令是CentOS 7中用于管理系统时间的命令行工具。该命令提供了多种选项,用于查看和设置系统时间相关的各种状态。 ...

    时区 - MetaTrader 5脚本.zip

    以下是这个脚本可能包含的一些具体知识点: 1. **MQL5语言基础**:理解脚本是如何使用MQL5语法来定义变量、条件语句、循环和函数的。 2. **图形对象绘制**:脚本会使用MQL5内置的函数绘制垂直线,这些函数可能包括...

Global site tag (gtag.js) - Google Analytics