对Magento的时间/时区的几点见解

Magento整个系统中使用UTC时间,即通用协调时(UTC, Universal Time Coordinated)。这样保证在不同的视图或者Store里使用的时间与本地时间一致,在系统配置中可以看到,每个视图或者店铺可以单独设置时区

Magento在数据库中存贮的都是UTC时间,在渲染视图的时候会显示当前时间。

如果想在视图中获取当前时间,可以使用如下函数:

Mage::getModel('core/date')->date();

或者在Grid中使用:

        $this->addColumn('customer_since', array(
            'header'    => Mage::helper('customer')->__('Customer Since'),
            //这个是指定该字段是时间字段,在视图输出的时候会自动转成当地时间。
            'type'      => 'datetime',
            'align'     => 'center',
            'index'     => 'created_at',
            'gmtoffset' => true
        ));

提示的一点是在Magento开发中千万别尝试改变 系统时区
,例如在入口文件
index.php或者启动器Mage.php加入date_default_timezone_set这样的函数,不然你会扰 乱整个系统的时间。

date_default_timezone_set('Asia/Shanghai');

下面文章是摘录自百度知道,对时区
的介绍:


每个地区都有自己的本地时间,在网上以及无线电通信
中时间转换
问题
就显得格外突出。我自己就经常混淆于此,特地研究了一 下,记录在此以备忘。

整个地球分为二十四时区
,每个时区
都有自己的本地时间。在国际无线电通信
场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。

北京时区
是东八区,领先UTC八个小时,在电子邮件
信头的Date域记为+0800。如果在电子邮件
的信头中有这么一行:

Date: Fri, 08 Nov 2002 09:42:22 +0800

说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间)。电子邮件
信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午。

以这个电子邮件
的发送时间为例,如果要把这个时间转化为UTC,可以使用一下公式:

UTC + 时区
差 = 本地时间

时区
差东为正,西为负。在此,把东八区时区
差记为 +0800,

UTC + (+0800) = 本地(北京)时间 (1)

那么,UTC = 本地时间(北京时间))- 0800 (2)

0942 – 0800 = 0142

即UTC是当天凌晨一点四十二分二十二秒。如果结果是负数就意味着是UTC前一天,把这个负数加上2400就是UTC在前一天的时间。例如,本地 (北京)时间是 0432 (凌晨四点三十二分),那么,UTC就是 0432 – 0800 = -0368,负号意味着是前一天, -0368 + 2400 = 2032,既前一天的晚上八点三十二分。

纽约的时区
是西五区,比UTC落后五个小时,记为 -0500:

UTC + (-0500) = 纽约时间 (3)

UTC = 纽约时间 + 0500 (4)

把(2)式 - (4)式相比较,

UTC = 北京时间 - 0800 = 纽约时间 + 0500 (5)

即 北京时间 = 纽约时间 + 1300 (6)

即北京时间领先纽约时间十三个小时,由(6)式,

纽约时间 = 北京时间 - 1300 (7)

在四月下旬,纽约又换用夏令时,又称为日光节约时,比标准纽约时间提前一个小时,实际成为西四区的标准时间,成为 -0400。

UTC + (-0400) = 纽约夏令时,套用以上公式,

北京时间 = 纽约夏令时 + 1200

纽约夏令时 = 北京时间 - 1200

在这些转换
中,最重要的公式就是

UTC + 时区
差 = 本地时间

时区
差东为正,西为负。例如,东八区(北京)是 +0800,西五区(纽约)是-0500,加州是西八区,是-0800,美国中部时区
是西六区,-0600,美国山地时区
是西七区,-0700,太平洋时 区是西八区,-0800,在夏天使用夏时制,成为-0700。德国时区
是东一区,+0100,夏天变为+0200。

多数电子邮件
程序,例如Outlook Expres
s,在显示时间时,计算机程序把时间先转换
成为本地时间再显示,例如,邮件的Date域为:

Date: Fri, 08 Nov 2002 09:42:22 +0800

Outlook Expres
s在显示时就显示为:

Date: Thur, 07 Nov 2002 08:42:22 pm,把北京时间转换
成为了纽约时间,而且把二十四小时格式
的时间转换
成为了十二小时的格式
。当然,为了时间转换
正确,发送方和接受方的计算机的时区
都要 设置正确,在这里,发送方的时区
要正确地设为北京时区
东八区,而我的时区
要设为西五区。

值得学习的一些习惯

 

1.长期的任务,要尽早开始

一般来说,长期任务总是比较烦人,也有难度,而人心里总有逃避困难的趋势,最后的结果或者是最后干脆放弃,或者是剩下一点点时间手忙脚乱地赶工;我自己之前也有这样的教训,自欺欺人地说“要轻松生活,抛开烦扰”,到最后几天才着急办理,搞得狼狈不堪。
后来,我发现这做法其实是事与愿违的,如果调整好心理状态,尽早了解情况并不必然带来的心理压力,反而因为时间充裕,有信心把握进度,即便中间遇到突发的问题,也留有时间解决;更重要的是,尽早着手,可以充分利用边角余料的时间:比如说,接到一份文档,需要在三天后给出意见,我一定会在当天大致浏览一遍,下面的三天里,就能在坐车、走路等等零碎的时间来思考,而且效果不错,如果没有尽早了解,这些时间就浪费了,什么有意义的事情也没干(阿基米德若不是之前遇到了问题,在澡盆里泡一万年也想不出办法检测皇冠的真伪)。
电子邮件的情况也是如此,我常看到有人讨论电子邮件是马上回好还是过一段再回好,我的经验是,收了电子邮件要尽快看,至少了解邮件里说了什么,如果不是着急的,等想清楚了再回。

2.时常想清楚自己正在做的事情

一般来说,我们做的工作总是有一个目的和意义的,但工作的形式又是非常具体的,忙起来往往就钻到死胡同里,忘记了真正的目的和意义,“想不清楚”自己真正要做什么了。前几天,我需要搭建一个演示环境,手上有两套方案A和B,方案A估计要半小时,方案B估计要一小时,于是我选择了方案A,可是动手之后才发现服务器缺乏一个必要的组件,于是先费劲添加好这个组件,再编译自己需要用到的软件,又发现在64位环境下会编译出错(以前我只在32位机器上编译过),上网查发现需要打一个补丁,于是又四处去寻找这个补丁……此时已经用掉一个多小时了,下面还不知道会有多少问题;我忽然想到,自己真正要做的无非是演示程序,解决打补丁、找软件之类的问题虽然很有意思,但其实从任务的角度考虑,是浪费时间,于是果断选择方案B,一小时后就顺利解决了。
据我观察,很多技术人员都热衷解决纯技术问题,温伯格称之为“hacking (神游)”;神游很好玩,容易上瘾,但我们都不是不食人间烟火的神人,要想真正做点事情,就不能放任神游。
关于这一条,还要补充一点:哪怕忙得昏天黑地,也不能没有头绪。工作的压力很大,忙得焦头烂额是常有的事情,许多人就在这种忙碌中失去了方向,往往忙了整天,下班了都不知道自己今天到底干了什么,有什么意义。我的经验是,越是这种时候,越要打起精神想想(虽然这样很难):自己究竟要干什么,目前的安排是不是可以做些调整……持续的思考,才会产生感悟,才能有改观,否则,有可能一直陷入“瞎忙”的境地而不能自拔。

 

3.给自己设定明确的时间点

我承认自己也喜欢玩,没事的时候上Twitter、看看论坛、聊聊天,确实很有意思,信息不断更新,总有自己感兴趣的东西冒出来,可是这样守在电脑前,大量的时间就浪费了,什么有意义的事情也没有做,即便做了,效率也很低——专注才能保证效率。摸索反思之后,我觉得比较合适的做法就是,给自己设定明确的时间点:比如现在八点二十,我可以告诉自己,上网玩二十分钟,八点四十开始学英语。因为有了明确的时间界限,反而会想在这二十分钟之内,尽可能高效地把自己感兴趣的内容都看了,而不会慢慢“浏览”;到设定的时间点,一定要令行禁止,专注地做之前决定的事情。
更重要的是,从小事开始给自己设定明确的时间点,对培养执行力很有好处——如果许多小事都能做到“说做就做”,慢慢的,复杂一些大一些的任务,也能够“说做就做”了,有惯性、也有信心去完成。

4.写日记

正规一点的网站,都有详细的访问日志(记录),即便不做数据挖掘,一旦网站的访问出现异常波动,就会在日志上体现出来,而且检查日志,可以发现问题所在;网站是这样,人也是这样。我从08年翻译温伯格的《技术领导之路》开始,也开始每天记日记,发现日记和网站的访问日志有相同的功能:比如我一般到公司都在8:35左右,前后误差不超过5分钟,但上周有几天都在9:00左右,检查日记,就可以发现这种变化,而且可以找出变化的原因——是早上做事的顺序改变了。而且,根据日记,我还可以观察评估这种变化的影响,是好是坏。
日记也可以不断提醒鞭策自己,有段时间我发现自己时常处于无事可干的状态,如果没有日记,我多半只觉得“这段时间总是无事可干”,但日记里会写下“今天是感觉无事可干的第八天了”,这样,对自己督促压力会大很多,动力也会强得多。
关于日记还要多说一点,我以前总不理解,记了多年日记的人,日记为什么那么简单?只记录哪天做了什么,附加一点简单评论,而没有太多抒情。我从翻译《技术领导之路》开始到现在记了一年多的日记,逐渐明白了,持续的日记就需要这样记录:当天的主要行为,加上一点评论和反思。日记不太适合作为抒情的载体,更合适的功能是真实记录生活的痕迹,用以分析、反思,然后自己才有可能提高。

5.培养预见能力

古话说“凡事,预则立,不预则废”,这是很对的。拿软件项目来说,尽管项目的开发时间很难预测,但有经验的技术人员往往能进行更准确的判断,这就是因为他们具有预见能力:能预见到开发中会遇到的问题,这样做出的安排,时间上更充裕(也就能保证效率),心理上也更有准备。
另一方面,我也亲眼见到许多技术人员,只管完成手上本阶段的任务就万事大吉,从来不去预见这些问题:自己的程序能够负载多大的规模和压力,超出这个负载能力,会出现怎样的问题,应该怎样解决,这个问题,照目前的发展速度,大概多久会出现……结果就是,等到问题真正出现了,手忙脚乱焦头烂额,“迭代开发”就成了“拆迁开发”——到某个时间点就要推倒全部重来过一次,质量无法保证不说,自己也累得苦不堪言。
软件行业有本名著叫《重构》,这本书的核心思想是,软件需要不停地重构,要不就会僵化(decay),如果仅仅满足于眼下没有问题,持续的重构也无从说起。

6.树立大局观

前些天有个朋友与我讨论跳槽的事情,眼下有两个选择,很难决定;我听了他的详细描述说,这样吧,你暂时不看薪水、职位这些,你这样想:十年,或者五年之后,你希望自己是个怎样的人,是怎样的生活状态?拿着这个答案来衡量你现在的两个选择,看看会怎样。结果,过会儿他就很痛快地做了决定。我想,这就是大局观的作用。
我自己也会遇到许多取舍、抉择的问题,比如我总觉得自己关于计算机的基础还不够扎实,我的英语还不够好,书也读得太少,我的照片拍的还不够好……于是想去补习基础、去学英语、去读书、去看大师的照片……做其中的任何一件,都会给人成就感,但人的时间和精力都是有限的,不可能兼顾;在需要做出选择的很多时候,我都会努力摆脱一本书、一门知识、一件事的局限,跳出来想一想,宏观看来自己现在究竟在怎样的状态,重要的任务是什么,将来希望做一个怎样的人……清楚了最迫切的需求,才可以从容抉择,即便放弃了一些看来还不错的机会也不可惜——况且,正如李笑来老师说的,诱惑许多时候是伪装成机会出现的,拿着大局观的照妖镜,许多诱惑才会显出原形。
大局观不仅对个人成长有用,对工作也有用:无论手头的事情多么细小、琐碎,思维总可以跳出工作的限制,尝试从更广的角度来看待自己所做的事情,到底有怎样的价值,应该如何改进;这样,自己的工作能够做得更好,与同事的配合也会更加默契。

7.在生活中细心观察

我每个周末要去麦德龙买购物一次,最开始的几周,我会选择不同的时间点去:早上八点,上午十一点,下午一点,下午四点……这样就能大概地知道,什么时候购物最省时间。这一点,光靠想是很难判断准确的,因为人多的时候有可能结帐窗口也多,人少的时候结帐窗口也少。有了这点了解,就可以妥善安排,尽量减少购物时排队的时间。此外,还可以知道停车场在不同时段的状况,下雨天,也可以选择合适的时段去购物,把车停在有遮挡的车位。
再比如,从家到公司的路不止一条,开始的时候我会尝试每一条路,看看是否拥堵,是否平坦,大概要花多少时间;如此,遇到各种情况,都可以迅速地选择相对来说最合适的路径;如果只走一条路,或者不留意观察,就不会了解这些情况,遇到情况也就没有这么多选择。

8.培养分寸感

分析事物,除了定性之外,还有定量,而且定量分析往往更有意义——世界上非此即彼、非黑即白的问题太少了。可惜,许多时候我们却不自觉地在用定性的思维看待世界,往往丧失了很多机会。
举个例子吧,《把时间当作朋友》里提到了一本传记《奇特的一生》,作者详细描述了苏联科学家柳比歇夫管理时间的做法——柳比歇夫每天对时间的把握可以精确到分钟,他每天认真记录自己花多少时间做多少事情:写作35分钟,读书50分钟…虽然“精确到像一座钟”,但传记作者也承认,自认为“还充实”的生活比起柳比歇夫,确实差了太多。我读《奇特的一生》感触很深,我也深知自己虽然无法做到柳比歇夫那么精确,但至少可以偷学一招半式,让自己的生活更有条理,效率更高。但是给一些朋友推荐时,我遇到的第一反应就是:生活那么精确,都成机器人了,多可怕!潜台词就是根本不想了解,不愿意了解。但我想说的是,认真了解柳比歇夫的生活,并不要求我们都像他那样做到极致,而只是提供一个机会借鉴他人的经验和生活习惯(如果不知道,连借鉴都无从说起),至于借鉴几分,这个分寸是可以也需要自己把握的。

我深以为,分寸感是非常重要的,它让我们淡定看待各种情况:看到不好的,提醒自己保持距离,看到好的,告诉自己努力借鉴,至少不要被拉大差距。这样才能坦然面对生活,找到自己所处的坐标。化用我喜欢的科学哲学家卡尔·波普的说法,我们的自我感觉良好,必须是建立在比较和判断的基础上的——越是了解这个世界,看得越多,知道的越多(当然也要把握、自我克制的越多),这种感觉才真正越“良好”(关起门来固步自封的“良好”,其实很脆弱很黯淡)。哲学家维特根斯坦在临终前说的话:“多幸福啊,我度过了美好的一生”。他说那句话,是有底气的。