码迷,mamicode.com
首页 > 其他好文 > 详细

关于时区时间的设计

时间:2015-07-23 12:05:44      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:时区   架构   设计   互联网   电商   

关于时区时间的设计

                                             紫薇真人李万鸿

   由于系统使用的地域不同,时区和时间也不同,因此,需要对时区时间处理进行设计,保证系统的时间正确。各个site的时区由用户指定,时间用本地时区时间以字符串保存,使用时带上时区转换为本地时间,终端使用的时区是本地时区,所以时间是本地时间。大多数国家采用夏令时,所以在使用夏令时的时候,把t_timeZone的时区timeZone加1,夏令时结束时,再把t_timeZone的时区timeZone减去1。

一.   选择时区功能。

用户选择国家,然后系统从配置文件查出该国的所有时区,由用户选择。所选择的时区key保存在t_site的timezone字段,在t_timeZone保存其时区、国家、key。国家的时区有资料。当结束夏令时的时候,用户点击一个按钮,系统保存这个结束的时间。在夏令时结束的时候,会把时间减少1小时,因此会有一个小时的重复,比如3点调为2点,就会出现2个2到3点的时间段。为此需要区别后来的2到3点这一个小时,方法是把这个小时的时间对应的timezoneOffset设为1,以后使用时加以区别。timezoneOffset默认为0。一般各国夏令时的这个开始、结束的时间是固定的,比如3月的第一个星期日2点开始,11月的第一个星期日的3点结束,大多数国家的夏令时是有区别的。

与时间相关的表都有timezoneOffset字段,在夏令时结束的时候,对重复的一个小时的时间,将timezoneOffset设为1。以后访问表的日期字段时,需要从夏令时表中查询夏令时结束的时间,如果使用的时间在这个重复的时间段,则通过timezoneOffset字段来区别。

为此需要新增一张夏令时表t_dst_end,保存本区夏令时结束的时间。

二.   选择时间的功能。

1.服务器时间

用DateUtils.formatCurrentDate("GMT+0" ),得到标准时间。显示此时间调用String  formatCurrentDate2(String  date, "GMT+0");

2.用户界面设置时间。

界面所选择的时间为本地时间,以字符串保存在数据库中,以后可以获取使用这个时间,使用时调用Date getTimeFromString(String date, String countryTo)得到本地时间,参数countryTo为本地时区,显示此时间调用String  formatCurrentDate(Date date,String countryTo);,或String  formatCurrentDate2(String  date,String countryTo);

 

使用getTimeFromString(Stringdate, String countryTo)方法,不管是哪个时区,结果都是String date的时间。

3.schedule的时间。

  取小时可以通过日期调用int getHour(String countryFrom,String date)类似可以得到年月日、时分秒的数字,便于比较处理。

 

三.  使用时间的办法。

日期处理工具类DateUtils做了修改,各个方法在参数中加了时区参数StringcountryFrom,以后使用需要加上这个参数。

在用户登录以后,系统从界面选择时区,把时区的key存入t_site表,把国家、时区和key存入t_timeZone;系统使用时区时根据t_site的key从t_timeZone中查询出这个时区timeZone。

                                    2015-3-2

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

关于时区时间的设计

标签:时区   架构   设计   互联网   电商   

原文地址:http://blog.csdn.net/buddha17/article/details/47019277

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!