客户端和服务器之间的时区差异?

时间:2015-03-31 10:04:55

标签: jquery django python-2.7 client-server

我的客户端服务器基于Web的应用程序出现了一个问题。 我使用Django框架开发了一个门户。我的服务器位于AWS(弗吉尼亚北部)。它是一种时间警报应用程序。我的问题是,当我从印度的UI端设置时间时,它会按照印度时间进行存储。但是服务器端的cronjob按照服务器时间执行它(根据服务器实例时间)。
例如我已设置时间3.00 PM,然后它应该在3.00PM创建警报,但它会根据服务器时间9.00 AM创建警报。这是时区问题,但我无法理解如何处理这种情况。

在Settings.py

LANGUAGE_CODE = 'en-us'

#TIME_ZONE = 'Asia/Kolkata'
#TIME_ZONE = 'America/Chicago'
TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

#USE_TZ = True

我在客户端使用jquerydatetime picker,它获得默认的系统时间。请建议一种解决此问题的方法。

1 个答案:

答案 0 :(得分:2)

好吧,解决方案可以使用JQuery并存储客户端的偏移量。例如,让我们在系统的用户模型中有一个字段:

class CustomUser(models.Model):
    user = models.OneToOneField(User)
    time_offset = models.DecimalField(default=Decimal('0.0'),max_digits=3, decimal_places=1)

(参考此SO答案)对您的自定义视图发出ajax请求,并将此值保存在用户模型中。

$(document).ready(function(){
    var now = new Date()
    var value = now.getTimezoneOffset()

    $.ajax({
        url: "your-url",
        type: "post", // or "get"
        data: value,
        success: function(data) {

          console.log(data);
        }});

});

# Ajax request view

import json
def post(request):
  if request.POST():
      data = {}
      try:
         get_value= request.body
         custom_user = CustomUser.objects.get(user=request.user)
         custom_user.time_offset = get_value
         custom_user.save()
         data['success'] = 'Success'
         return HttpResponse(json.dumps(data), content_type="application/json")
      except Exception as e:
         data['error'] = e
         return HttpResponse(json.dumps(data), content_type="application/json")

现在你有了偏移,所以当你运行你的玉米棒时,只需加/减时间偏移。