关于时区时间的设计

关于时区时间的设计

                                             紫薇真人李万鸿

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

 

 

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

时间: 2024-10-11 15:01:04

关于时区时间的设计的相关文章

简单Unity时间架构设计(克洛诺斯之匙)

简单Unity时间架构设计(克洛诺斯之匙) 好吧,这次的题目有点标题党之嫌,提出这个设计,是因为最近玩了鬼泣,其中有一个关卡叫做“为了自己的主人”,任务中,需要利用克洛诺斯之匙将时间变慢,便于通过激光镇. 使用克洛诺斯之匙之后,主角的行动是正常的,运走,攻击等等.而其他的如怪物,死亡特效等对象的更新都变慢了.当时我想,如何让不同的对象能够按不同频率更新呢? 在unity中,脚本按时更新的是Time.FixedUpdate,改变其速率只需要修改Time.timeScale就行了.然而这么做非常“鲁

修改php上传文件尺寸、响应时间、时区时间等设置

修改php上传文件尺寸.响应时间 1.修改php.ini 1.post_max_size 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M(改为150M),看你自己需要进行改变. 2.首先确认file_uploads = on 是否允许通过HTTP上传文件的开关,默认为ON即是开. upload_tmp_dir 通过HTTP上传文件的缓存目录,检查是否可写; 查找upload_max_filesize 即允许上传文件大小的最大值.默认为2M(改为100M). 3.如果

JS一个根据时区输出时区时间的函数

做项目遇到的坑爹问题,需要根据时区获取时区中轴线的时间.为此搜了好久网上都没什么JS的代码描述到这一方面,最后自己翻了下高中地理才写了个函数出来. 此图可以看出来,全球分为了0时区,东西1-11区,第12时区.下面就是我写的JS的根据时区输出时间的函数: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl

solr和java时区时间日期转化方法

我们一般得到的时间为当地时区的时间,而我存储到服务器上时想得到格林威治时间(GMT)和世界协调时间(UTC).一种是通过时间差计算:目标时区时间+时区差=本时区的时间.另一种则是通过设置时区不过要调用set方法,在多线程情况下调用set会发生错误,所以最好使用第一种: 第一种代码: package com; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public cla

linux时区时间问题

linux时区时间问题 1.在linux中,用date查看时间的时候显示: 2013年 2月 17日 星期三 19:04:14 CST 世界协调时间(Universal Time Coordinated,UTC): GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此计算即可. Linux下可以通过运行命令tzselect然后输入选项前面的数字来一步

Linux内核中获取时间并转换成本地时区时间

下面的函数get_time_str实现了在内核中获取本地时间的功能. 他首先获取utc时间,然后根据系统的时区timezone转换成本地时间, 最后将时间以"2014-11-02 21:14:08"的字符串的形式输出到output缓冲区中. 函数的返回值,是输出的字符串的长度. #include <linux/time.h> #include <linux/timex.h> #include <linux/rtc.h> int get_time_st

js将UTC时间转化为当地时区时间

我们在进行网站开发的时候有可能会涉及到国外的用户或者用户身在国外,这时就会存在时差问题,比如说我们在中国的时间是08:00,但是此时韩国的时间是09:00,如果在网页上需要进行相关显示的话就会出现问题,那作为一个前端该怎么解决这个问题呢? 前端通过请求获取的时间一般都是时间戳格式,这个时间戳一般就是UTC时间(*UTC:最接近标准时间的一个时间标准),而我们在网页上需要显示的是GMT时间,下面就是根据本地时间获得GMT时间和任意时区的时间函数: 1.将本地时间转化成任意时区的时间(如:通过本地时

Linux服务器修改时区时间

时间的一致性很关键,对于日志的分析和程序的对接都至关重要! 01.tzselect 修改时区 可以使用命令 tzselect,修改时区.操作示例: $ tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent or ocean. 1) Africa 2) Americas 3) Antarctica 4) Arctic Ocean 5) A

iOS 倒计时及获取本时区时间

倒计时 在viewDidLoad里写个定时器 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; 然后声明定时器的方法 -(void)timerFireMethod:(NSTimer*)theTimer { //定义一个NSCalendar对象 NSCalendar *cal = [NSCalendar cur