我的数据库以GMT格式存储时间,并且我有一个字段来存储每个用户的时区,因此当我向用户显示时间时,无论他们身在何处,都始终是当地时间。
现在的问题是,当支付网关(不遵循GMT)ping我的系统时,这些用户会在另一个月的会员资格中自动续订。
我可以实现解决方案的最正确方法是什么?当支付网关ping我的系统时,我会更新用户,使其在他们的时区有意义?这里的问题是,如果用户的帐户设置为在1月5日到期,而不是1月5日在用户的时区,但在服务器/支付网关的1月5日,我该怎么办呢?我可以想出一些奇怪的方法来解决这个问题,但我只是想知道最好的方法是什么?
由于
答案 0 :(得分:0)
确定您的支付系统时区是固定的(即使它不是GMZ),您需要做的就是在处理用户时从用户时区转换为GMT,并在处理付款时从GMT转换为支付系统时区系统
所以你的用户是PST,你的时区系统是EST,你在英国(或者至少你是GMT)。
用户在2010年12月31日太平洋标准时间晚上11点(2300)登记1个月。
PST是GMT - 8,EST是GMT -5(或者是-7和-4 ......我得到ST和DT经常混淆......)。
GMT用户注册时间为1/1/11 0600(早上6点)。 EST用户在1/1/11 0200(凌晨2点)注册。
正如你所说,如果你告诉支付系统在1/31/11晚上11点将用户到期,它将把它读作EST,并发送信号在2/1/11凌晨4点到期,这将是1 / 31/11太平洋标准时间,所以用户将失去3个小时。
但如果您告知付款系统在美国东部标准时间2月11日凌晨2点到期,则该信号将于格林尼治标准时间2月11日上午7点31分发送,即2011年1月31日晚11点。
如果远程站点不支持GMT,那么在该系统的时区内始终处理每个客户端(无论是用户还是远程系统)都属于您。