aix 夏令时,localtime mktime-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3976821
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类:

2010-07-13 15:31:44

看看一个很简单的程序:
int main(int argc, char *argv[])
{
  time_t        tm;
  struct tm     *tp;

  time(&tm);
  tp = localtime(&tm);
#define scn_tm_fmt          "u-u-u u:u:u"
#define scn_tp_fmt(tp)      tp->tm_year 1900, tp->tm_mon 1, tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec
  fprintf(stderr, scn_tm_fmt" isday:%d\n", scn_tp_fmt(tp), tp->tm_isdst);

  return (0);
}

不同的系统输出不一样:

我自己的linux输出:
[oracle@asm odt]$ bin/odt_ut
2010-07-09 20:07:54 isday:0
[oracle@asm odt]$ uname -a
linux asm 2.6.9-22.el #1 mon sep 19 18:20:28 edt 2005 i686 i686 i386 gnu/linux

公司aix输出:
p270$(/home/shangj/ganhk/dmp/module/c/v0/odt)uname -a
aix p270 2 5 0005a9dc4c00
p270$(/home/shangj/ganhk/dmp/module/c/v0/odt)bin/odt_ut
2010-07-13 15:29:15 isday:1

主要是tm_isdst上面为什么不一样,下面这遍文章应该可以解释这个问题了。


由于系统选择了夏令时,导致数据库和系统时间差1个小时

echo $tz

修改/etc/environment 。设置tz=beist-8

处理方法这里有个帖子不错

http://www.fengjian.org/mine/blog/article.asp?id=122

某日发现ibm小型机的aix系统时间快一个小时,故经过确认,修改应该没有问题。

其实上有问题—oracle数据库记录的一些数据都是快一小时,看看系统时间和oracle取到的时间又是对的,如下:

oracle:

sql> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as datetime from dual;

datetime
---------------------
2008-05-23 19:14:56

aix:

bash-3.00# date
fri may 23 19:14:56 beidt 2008

bash-3.00# echo $tz
beist-8beidt

看看么好像对的,北京时间,其实问题是出在dt的问题上,好像是指夏令!这里有一些解释

-------
夏令时daylight saving time就查了一下,原来是夏令时,但中文中的夏令时,我也不懂呀!又到百度/google看了一下,原来如此!

夏令时,又称“日光节约时制”(daylight saving time),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时”。一般在天亮早的夏季人为将时间提前一小时, 可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令 时。

据说最早建议使用夏时制的是本杰明·富兰克林,他在任美国驻法国大使期间,由于习惯于当时美国农村贵族的早睡早起生活,早上散步时看 到法国人10点才起床,夜生活过到深夜。于是他在1784年的一期《巴黎杂志》上发表了一篇文章,说法国人的生活习惯浪费了大好的阳光,建议法国人早睡早 起,说每年可以节约6千4百万磅蜡烛。但他当时并没有建议实行夏时制,因为当时根本还没有统一的时区划分。不过夏时制在英语里就是“节约阳光时间”

1942年,第二次世界大战期间,美国又实行了夏时制,1945年战争结束后取消。1966年,美国重新实行夏时制。欧洲大部分国家从1976年,即第四次中东战争导致首次石油危机3年后(1973年)开始实行夏时制。

-------------------
ok,问题所在,下面我们查查看看如何改!aix下其实用一下

bash-3.00# smitty chtz


use daylight savings time?

move cursor to desired item and press enter.

# does this time zone go on
# daylight savings time?
#
1 yes
2 no

f1=help f2=refresh f3=cancel
f8=image f10=exit enter=do
/=find n=find next

选2 no


cut (coordinated universal time) time zone

move cursor to desired item and press enter.

[top]
(cut0) coordinated universal time (cut)
(gmt0) united kingdom (cut)
(wet0) western europe (cut)
(azorest1) azores; cape verde (cut -1)
(falkst2) falkland islands (cut -2)
(grnlndst3) greenland; east brazil (cut -3)
(ast4) central brazil (cut -4)
(est5) eastern u.s.; colombia (cut -5)
(cst6) central u.s.; honduras (cut -6)
(mst7) mountain u.s. (cut -7)
(pst8) pacific u.s.; yukon (cut -8)
(ast9) alaska (cut -9)
(hst10) hawaii; aleutian (cut-10)
(bst11) bering straits (cut-11)
(nzst-12) new zealand (cut 12)
(met-11) solomon islands (cut 11)
(eet-10) eastern australia (cut 10)
(jst-9) japan (cut 9)
(korst-9) korea (cut 9)
(waust-8) western australia (cut 8)
(taist-8) taiwan (cut 8)
(beist-8) peoples rep. china (cut 8)
(thaist-7) thailand (cut 7)
(tashst-6) tashkent; central asia (cut 6)
[more...7]

f1=help f2=refresh f3=cancel
f8=image f10=exit enter=do
/=find n=find next

选择:
beist-8) peoples rep. china (cut 8)
即可:)

提示:any changes made to the time zone will take effect at the next system boot.
重启生效!

老实说不了解国外的一些制度,有时后真得不理解问题的原因,当我看到修改时区的界面,看到daylight saving time都不知道是什么意思!


阅读(2840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图