Python中Django框架的时间处理问题请教

models.py 定义

jiezhi_date = models.DateTimeField(blank = True, null = True, db_index = True, verbose_name = _(u’信息截止时间’))

模板里这样:

<div style=“color: #A8B1BA;” class=“text”>截止时间: {{form.jiezhi_date}}</div>

在前台.html 显示:



怎么样让它变成后台那样:



后面有选择时间与日期的按钮?

多谢?
Python中Django框架的时间处理问题请教


6 回复

图片怎么不显示.


在Django里处理时间,核心就两点:用timezone模块和正确配置USE_TZ

关键配置:settings.py里,确保:

USE_TZ = True  # 启用时区支持
TIME_ZONE = 'Asia/Shanghai'  # 设置默认时区

核心操作:

  1. 获取当前时间: 永远用django.utils.timezone.now(),别用Python自带的datetime.now()

    from django.utils import timezone
    current_time = timezone.now()  # 带时区信息的当前时间
    
  2. 创建带时区的时间:timezone.make_aware()给原生datetime对象绑定时区。

    import datetime
    from django.utils import timezone
    naive_dt = datetime.datetime(2023, 10, 27, 14, 30)
    aware_dt = timezone.make_aware(naive_dt, timezone.get_current_timezone())
    
  3. 模板显示:{{ value|date:"Y-m-d H:i" }}过滤器,Django会自动转换到当前时区。

  4. 数据库存储: 模型里用DateTimeField就行,存进去的UTC时间,Django会帮你自动转换。

常见坑:

  • 比较时间时,确保两个datetime对象都是“aware”(带时区)的,否则会报错。
  • 从外部系统接收时间字符串时,先用pytzdateutil解析清楚时区,再用make_aware转成Django时区对象。

一句话总结:USE_TZ,所有时间操作都走django.utils.timezone就对了。

js 日期时间选择控件

  1. 请学会使用 Markdown,至少养成发帖前「预览」的习惯
    2. 这是前端问题,可以以关键字「 js 日期选择」等进行查找(加个提示,选好后在响应式下测试。。。)
回到顶部