The Time Zone for Simple Web Application

Online Course, 学生在学完在Online Course的相应课程之后, 就可以参加其讲课老师所出发出的考题.

由于这个系统可能只会部署在世界的某一个地方, 但可以被世界各个地方的人所访问; 例如: 服务器可能会部署在澳大利亚, 但是中国, 新加坡, 英国, 美国 & 加拿大等许多国家的老师和学生都要访问这个服务器, 学生有可能参加全球各地的老师的课程, 老师可以给全球各地参加他课程的学生分发试卷. 所以就会存在一个问题:

 

当前服务器是部署在澳大利亚的, 系统所获得的时间肯定是澳大利亚当前的时间, 但现在新加坡/英国的老师都需要去访问这个系统去创建考试题目生成试卷并发给他们的学生; 在分发试卷给学生的时候, 老师需要选择一个开始时间和结束时间, 由于是Web Application, 所以系统提供了一个JavaScript做的日历控件, 所以新加破的老师所选择的时间是新加坡的时间, 而英国的老师所选择的时间是英国当前的时间, 澳大利亚的时间是GMT+10, 新加坡是GMT+8, 英国是的时间是标准时间GMT; 所以系统在计算还有多长时间学生才可以开始测试, 又有多长时间可以参加测试, 并且在参加测试的过程中剩余还有多长时间, 如果是不同时区的学生参加同一个考试, 他们所显示的考试时间间隔还必须是相同的; 这些问题, 在之前都没有考虑到时区的问题, 所以就会存在一些很严重的问题, 例如: 新加坡的老师想要在上午7:00创建一份试卷, 但现在澳大利亚时间是9:00钟了, 所以系统会提示"开始时间必须晚于当前时间"之类的信息, 同样, 澳大利亚的老师在上午11:00所创建一份下午1:00开始试卷, 英国的学生还以为有10多个小时呢, 其实考试离他们只有2个小时, 这些种种问题都是由于时区所以引起的.

 

由于我们需要显示当前用户所选择的时区的信息, 并且用户可以自由的选择时区, 比如他正在英国通过网络给在澳大利亚的选择创建一个考试卷; 诸如此类, 所以我们要提供一个时区的选择器让用户去选择, 并且保存在数据库中, 并记录用户所选泽的时区与当前服务器时区的时间差, 这样, 每次在进行时间操作的时候先用DB Function 做一下时间同步, 问题就可以得到解决了. 

 

由于我们的所用的平台是Java, 但我们想显示Time Zone 列表信息和Windows Time Zone 一致, 而且当用户第一次进入系统时要默认是他当前的时区; Java 的时区信息与Window的时区信息有点不一样. 于是我们建立一个Windows Time Zone 与 Java Time Zone 的 Mapping, 为这个Mapping 定义一个ID 存放到DB中, 由于会有很多城市/国家会在同一个时区之内, 我们就顶一个默认的国家作为显示如果User是这个时区之内的国家, 这样做不是很好但是已经解决了我们的基本需求; 我们没有办法在服务器端获得用户的时区信息, 只能通过JavaScript获取客户端的时间差信息保存到Cookie中并且在服务器端获得, 来自动选择一个默认的相对应的时区信息给Client, 到此我们的用户的需求就解决了.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值