django服务器以及本地时间差设置

本文介绍了如何在Django项目中修改setting.py文件以调整时区,包括TIME_ZONE和USE_TZ参数的影响。同时,文章还强调了在Windows系统下设置时区的不同行为,并提供了解决代码中默认时区问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# Y-m-d
@register.filter(name='converYmd')
def converYmd(t):
    if t == '--':
        return t
    if t == '' or t is None:
        return t
    if len(str(t)) > 13:
        return "--"
    if int(t) < 0:
        return "--"

    t = float(int(t) / 1000.0)

    current_time = int(time.time())
    if t > current_time:
        return "--"
    else:
        x = time.localtime(t)
    return time.strftime('%Y-%m-%d', x)

这是一个过滤时间戳并转换时间格式的过滤器的代码因为在本地测试没有问题所以以为时间是正确的,但是部署到服务器上,却发现日期少了一天。查了查原因,是因为django的问题。


修改setting.py 文件

在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的, 
分别是TIME_ZONE和USE_TZ

如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即America/Chicago,

此时的TIME_ZONE不管有没有设置都不起作用。

如果USE_TZ 设置为False,而TIME_ZONE设置为None,则Django还是会使用默认的America/Chicago时间。

TIME_ZONE设置为其它时区的话,则还要分情况,如果是Windows系统,则TIME_ZONE设置是没用的,Django会使用本机的时间。如果为其他系统,则使用该时区的时间,入设置USE_TZ = False, TIME_ZONE = 'Asia/Shanghai', 则使用上海的UTC时间。这个值得引起注意因为吃过亏。。。。。

具体改成这样子

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False  # 为了保证django存入MySQL数据库时间差8个小时的问题

修改代码中默认时区

把代码中的时间也定位成utc时区

import datetime 
from django.utils.timezone import utc
utcnow = datetime.datetime.utcnow().replace(tzinfo=utc)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值