服务器时区显示date,关于时区时间的设计

关于时区时间的设计

由于系统使用的地域不同,时区和时间也不同,因此,需要对时区时间处理进行设计,保证系统的时间正确。各个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的时间。

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

三.  使用时间的办法。

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

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

2015-3-2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值