服务器端处理不同时区用户的请求

当服务器的时区和用户的时区不一致的时候,应该怎么处理用户上传的时间?Java提供了一个简便的方法:

 

前提:服务器端知道用户的具体时区。这个可以让客户端在请求中嵌入时区信息来实现。

 

1. 生成一个SimpleDateFormat对象,然后通过它的setTimeZone方法把该对象的时区设置成用户的时区:比如用户来自中国,sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));

 

2. 用SimpleDateFormat对象来parse用户上传的时间字符串,获得Date对象,然后存入数据库。此时该Date对象已经被Java按照服务器的时区做了转换。比如用户上传的时间是10点,然后服务器和用户相差一个时区,那么存入数据库的时间就是9点。

Date d = sdf.parse(value)

 

3. 服务器内部计算相对时间的时候,可以直接用该Date对象来和系统时间比较,无需处理。

 

4. 如果需要把之前存储的Date对象转换成字符串返回给用户,按照1中的方法再生成一个SimpleDateFormat并设置成用户的时区,然后调用format方法生成字符串即可

return sdf.format(d)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值