本案例使用 python3.8 django3.2.18项目配置settings.py# 时区设置为中国上海 TIME_ZONE Asia/Shanghai # 开启时区感知功能 USE_TZ True获取当前时间执行代码from django.utils import timezone from datetime import datetime date_time datetime.now() zone_time timezone.now() local_time timezone.localtime() print(date_time, type(date_time), date_time, date_time.tzinfo) print(django_time, type(zone_time), zone_time, zone_time.tzinfo) print(local_time, type(local_time), local_time, local_time.tzinfo)执行结果date_time class datetime.datetime 2025-09-11 10:28:50.410969 Nonedjango_time class datetime.datetime 2025-09-11 02:28:50.41096900:00 UTClocal_time class datetime.datetime 2025-09-11 10:28:50.41096908:00 Asia/Shanghai三者数据类型均为datetime.datetime主要区别在于时间和时区源码解析datetime.now()python自带的包一般都用这个获取当前时间不带时区信息没啥好说的。timezone.now()django的包用于获取当前时间并且携带时区信息如果开启了时区感知则获取的是UTC时区的时间否则效果和datetime.now()相同源码timezone.localtime()django的包默认用于获取当前时间并将其转换为TIME_ZONE所配置的时区此外这个函数还可以将指定的时间转换为指定的时区但是要注意传递的时间必须是携带时区信息否则就会抛出179行的异常localtime() cannot be applied to a naive datetime表示这个时间没有时区信息无法转换到目标时区源码时区转换from django.utils import timezone from datetime import datetime import pytz date_str 2025-09-10 10:00:00 # 将字符串格式的时间转换为datetime类型 date_time datetime.strptime(date_str, %Y-%m-%d %H:%M:%S) # 获取当前时区settings.TIME_ZONE tz timezone.get_current_timezone() # 将时间标记为utc时区timezone默认为当前时区也可以使用pytz.timezone()指定时区 utc_time timezone.make_aware(date_time, timezonetimezone.utc) # 转换为指定时区的时间 sh_time timezone.localtime(utc_time, tz) at_time timezone.localtime(utc_time, pytz.timezone(Asia/Tokyo)) print(tz, type(tz), tz) print(date_time, type(date_time), date_time, date_time.tzinfo) print(utc_time, type(utc_time), utc_time, utc_time.tzinfo) print(中国上海时间, type(sh_time), sh_time, sh_time.tzinfo) print(日本东京时间, type(at_time), at_time, at_time.tzinfo)输出结果tz class pytz.tzfile.Asia/Shanghai Asia/Shanghaidate_time class datetime.datetime 2025-09-10 10:00:00 Noneutc_time class datetime.datetime 2025-09-10 10:00:0000:00 UTC中国上海时间 class datetime.datetime 2025-09-10 18:00:0008:00 Asia/Shanghai日本东京时间 class datetime.datetime 2025-09-10 19:00:0009:00 Asia/Tokyo时区感知对数据库操作的影响创建数据库表CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, name varchar(255) NULL, update_time datetime NULL, PRIMARY KEY (id) );DajngoModel层class User(models.Model): name models.CharField(max_length255) update_time models.DateTimeField() class Meta: db_table user执行代码from django.utils import timezone from datetime import datetime import pytz date_str 2025-09-10 10:00:00 date_time datetime.strptime(date_str, %Y-%m-%d %H:%M:%S) tz timezone.get_current_timezone() utc_time timezone.make_aware(date_time, timezonetimezone.utc) sh_time timezone.localtime(utc_time, tz) at_time timezone.localtime(utc_time, pytz.timezone(Asia/Tokyo)) user_1 User.objects.filter(update_timedate_str) user_2 User.objects.filter(update_timedate_time) user_3 User.objects.filter(update_timeutc_time) user_4 User.objects.filter(update_timesh_time) user_5 User.objects.filter(update_timeat_time) print(fdate_str: {date_str}\n{user_1.query}) # 输出sql实际 where update_time2025-09-10 02:00:00 print(fdate_time: {date_time}\n{user_2.query}) # 输出sql实际 where update_time2025-09-10 02:00:00 print(futc_time: {utc_time}\n{user_3.query}) # 输出sql实际 where update_time2025-09-10 10:00:00 print(fsh_time: {sh_time}\n{user_4.query}) # 输出sql实际 where update_time2025-09-10 10:00:00 print(fat_time: {at_time}\n{user_5.query}) # 输出sql实际 where update_time2025-09-10 10:00:00输出结果观察时间变量和sql中的update_time条件值date_str: 2025-09-10 10:00:00SELECT user.id, user.name, user.update_time FROM user WHERE user.update_time 2025-09-10 02:00:00date_time: 2025-09-10 10:00:00SELECT user.id, user.name, user.update_time FROM user WHERE user.update_time 2025-09-10 02:00:00utc_time: 2025-09-10 10:00:0000:00SELECT user.id, user.name, user.update_time FROM user WHERE user.update_time 2025-09-10 10:00:00sh_time: 2025-09-10 18:00:0008:00SELECT user.id, user.name, user.update_time FROM user WHERE user.update_time 2025-09-10 10:00:00at_time: 2025-09-10 19:00:0009:00SELECT user.id, user.name, user.update_time FROM user WHERE user.update_time 2025-09-10 10:00:00总结当开启了时区感知使用DjangoORM操作数据库时会自动将时间转换为UTC时区对于没有时区信息的时间会将其视为settings.py中所配置的TIME_ZONE时区因此推荐使用timezone.localtime()来获取当前时间API接口返回指定格式时间假设现在有一个API接口要返回时间相关的数据from django.utils import timezone from django.http import JsonResponse def getTime(request): data { message: 成功获取当前时间, localtime: timezone.localtime() } return JsonResponse(data)API接口返回结果{message: 成功获取当前时间,localtime: 2025-09-13T14:22:45.67508:00}所返回的时间可能并非我们期望的格式此时可以使用自定义json编码器对数据进行格式化CustomizeEncoder.pyimport json from datetime import datetime from decimal import Decimal from django.utils import timezone # 自定义json编码器将指定类型的数据进行格式化 class CustomizeEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, datetime): if o.tzinfo: return timezone.localtime(o).strftime(%Y-%m-%d %H:%M:%S) else: return o.strftime(%Y-%m-%d %H:%M:%S) elif isinstance(o, Decimal): return float(o) # 使用默认的编码 return json.JSONEncoder.default(self, o)修改后的代码from django.utils import timezone from django.http import JsonResponse from XX.XX.CustomizeEncoder import CustomizeEncoder def getTime(request): data { message: 成功获取当前时间, localtime: timezone.localtime() } return JsonResponse(data, encoderCustomizeEncoder)再次请求API接口返回结果{message: 成功获取当前时间,localtime: 2025-09-13 14:40:59}
企业数字化 ERP 产品动态
相关推荐
Hermes Agent:智能网页自动化解决方案,释放AI驱动的浏览器交互潜能 Hermes Agent:智能网页自动化解决方案,释放AI驱动的浏览器交互潜能
在当今数据驱动的时代,网页自动化已成为开发者和数据科学家日常工作的重要组成部分。然而,传统浏览器自动化工具面临着诸多痛点:本地环境配置复杂、… · 2026/11/4 11:21:14
如何构建企业级AI代理日志分析系统:ELK Stack与机器学习实战指南 如何构建企业级AI代理日志分析系统:ELK Stack与机器学习实战指南
在AI代理系统日益复杂的今天,运维团队面临着一个严峻挑战:当数百个会话同时运行时,如何从海量日志中快速定位问题根源?传统的人工排查方式已无法应对现… · 2026/11/4 11:21:14
Hermes Agent与OpenRouter深度集成:多模型统一调度的技术解析与实战应用 Hermes Agent与OpenRouter深度集成:多模型统一调度的技术解析与实战应用
Hermes Agent作为一款自进化的AI代理框架,通过其灵活的架构设计实现了与OpenRouter平台的深度技术集成。这一集成不仅解决了开发者在多模型选择、成本优化和统一API接口方面的核心… · 2026/11/4 11:20:11
大模型小白入门:揭秘ChatGPT如何预测下一个字,收藏这篇轻松上手! 本文用7张示意图,深入浅出地解析了大语言模型(LLM)的技术链条。核心在于,LLM通过不断预测下一个字元来运作,从将语言数字化、预训练到生成回答,再到指令微调和人类反馈强化学习,最终形成强大的语… · 2026/11/4 12:04:56
收藏这份AI人才需求变迁指南:从算法到Agent工程师的转型与机遇 AI人才市场正经历范式转移,从算法工程师到大模型应用开发工程师,再到如今的Agent工程师。这一转变标志着AI产业从技术驱动转向应用驱动,从模型竞赛走向场景竞赛。Agent工程师需具备工具调用、规划决策、记忆管理等多重能力,是AI产… · 2026/11/4 12:04:56
18 Elasticsearch 原理图,引用自:一文彻底搞懂 Elasticsearch:原理、场景、避坑与优化
1 Elasticsearch
Elasticsearch是什么: 是一个基于 Apache Lucene 的分布式搜索和数据分析引擎,常用于全文搜索、日志分析、安全监控、业务分析和… · 2026/11/4 12:04:56
2026费控系统选型:一线财务实测的5个硬指标,避开3个落地坑 我在制造业财务岗干了十几年,近两年参与过三次费控系统选型,前后看过十几家产品。写这篇评测的原因很实际:选型时厂商演示都好看,落地后差距全在细节里。这篇文章讲清楚我验证费控系统的5个关键硬指标、3个最常见的坑,… · 2026/11/4 12:04:56
F-《AI接口协议:API调模型、MCP接工具、A2A连Agent》 目录
一、API(以 "标准 OpenAI 接口" 为代表)
1.1 请求
1.2 成功响应 &❌ 失败响应
二、MCP(Model Context Protocol,模型上下文协议)
2.1 请求(握手&调用)
2.2 成功响… · 2026/11/4 12:04:56
AD创建一体多个部件流程 最近在画RK3576的板子,发现这个元器件的引脚接近七百多个,要是直接用厂家提供的元件图难免画图不方便,只能自己处理这种超多引脚器件的标准行业做法是:采用多部件符号(Multi-Part Component),并… · 2026/11/4 12:03:54
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38