Django时间问题

今天使用Django写一个待办事项的时候,发现一个问题,我写入的是当前时间,但是数据库中显示的就一直不正确。代码如下:

def add_item(request):
    log.info(bsf+'begin add_item'+bsf)
    error = 'normal'
    deal_data = Deal_data()
    if request.method == 'POST':
        title = request.POST['title']
        date = request.POST['date']
        res_person_list = request.POST.getlist('ck')
        content = request.POST['content']
        person = deal_data.deal_res_person(res_person_list)  # 把列表处理为字符串
        priority = request.POST['priority']
        sel_type = request.POST['type']
        rst = deal_data.check_null([title, date, person, priority, content])
        log.info('接受的数据为'+title+date+person+priority+sel_type)
        if rst == 'success':
            error = rst
            log.info('='*10+'method = post,everything normal'+'='*10)
            up = todo(title=title,
                      exp_time=date,
                      content=content,
                      res_person=person,
                      type=sel_type,
                      priority=priority,
                      write_time=time.strftime("%Y-%m-%d %X", time.localtime()))
            up.save()
            return render(request, 'todo/add_item.html', {'error': error})
        else:
            log.error(rst)
            error = rst
            return render(request, 'todo/add_item.html', {'error': error})
    return render(request, 'todo/add_item.html', {'error': error})

这是新增一个待办事项的代码,我在前端传入的日期是20160210,但是在数据库中存储的数据是20160209,数据记录如下:
Django时间问题_第1张图片
数据库中显示如下:

经过几次不同日期的输入,我发现了一个问题,写入的时间貌似采用的是UTC时区。而我们需要写入的日期就是当前的日期,也就是北京时间。
在settings文件中我已经设置了时区为上海啊,代码如下:

LANGUAGE_CODE = 'zh-cn'

TIME_ZONE = 'Asia/Shanghai'

找了一下资料,发现在settings里面还有一个开关没有处理,代码如下:

USE_TZ = False

这个参数默认是True的,改为Flase使用的就是当前时间了。
具体有关时间的详情,可以参考《Django时间的时区问题》

你可能感兴趣的:(django)