History timestamps are displayed in UTC instead of local time (2-hour offset in CEST)

这是 Krita AI Diffusion 插件 1.52.1 及更早版本中的代码 Bug,并非系统时区或 Flatpak 环境配置问题。历史记录缩略图与导出文件名直接格式化了 UTC 时间戳,未先转换为本地时间。升级到 1.53.0 或手动补丁可解决。

快速结论:这是 Krita AI Diffusion 插件 1.52.1 及更早版本中的代码 Bug,并非系统时区或 Flatpak 环境配置问题。历史记录缩略图与导出文件名直接格式化了 UTC 时间戳,未先转换为本地时间。升级到 1.53.0 或手动补丁可解决。

适用环境:Fedora 44 KDE、Krita Flatpak(org.kde.krita)、AI Diffusion 1.52.1、插件内置的 ComfyUI 服务器。

最快修复方案:升级至 1.53.0 版本(官方已修复)。若无法升级,可手动修改 `ui/generation.py` 第 166 行和 `model/model.py` 第 1623 行,在格式化前调用 `.astimezone()` 转换本地时间。

注意事项:手动补丁需修改插件源代码,升级插件后补丁会丢失;`.astimezone()` 无参数时使用系统本地时区,在跨时区切换场景下需注意。

问题场景

在 Krita AI Diffusion 中使用生成功能后,查看历史记录缩略图时,发现时间戳比系统本地时间晚 2 小时(CEST 夏令时场景)。同一问题也影响从历史记录导出的文件,其文件名中的时间戳同样使用 UTC 而非本地时间。系统时间、Krita Flatpak 和插件内置 Python 环境的时区均配置正确。

报错原文

History timestamps are displayed in UTC instead of local time (2-hour offset in CEST)

Local system time: 23:29 CEST
AI Diffusion history: 21:29
The offset is always exactly the current UTC offset.

原因分析

根本原因是代码 Bug,而非运行时环境问题。插件在创建任务时使用 `datetime.now(timezone.utc)` 生成带时区信息的 UTC 时间戳,但展示时直接对 UTC 时间应用 `%H:%M` 格式化,未先调用 `.astimezone()` 转换为本地时间。Python 不会对带时区的 datetime 自动转换,因此历史 UI 显示的是 UTC 时间。该问题同时影响历史记录缩略图和导出文件名两处。

环境排查

  • 确认插件版本为 1.52.1 或更早版本(1.53.0 已修复)。
  • 检查系统时区设置:`timedatectl` 应显示正确的时区(如 Europe/Paris, CEST +0200)。
  • 验证 Krita Flatpak 时区:`flatpak run –command=date org.kde.krita` 应返回本地时间。
  • 确认插件内置 Python 环境时区:`datetime.now()` 和 `time.localtime()` 返回正确本地时间。
  • 注意:环境排查均正常时,基本可判定为插件代码问题。

解决步骤

  1. 首选方案:升级至 AI Diffusion 1.53.0 版本,官方已在发布版中修复此问题。
  2. 若暂时无法升级,可手动补丁:
    1. 定位插件源文件 `ai_diffusion/ui/generation.py` 第 166 行,将 f"{job.timestamp:%H:%M} - {strength}{prompt}" 修改为 f"{job.timestamp.astimezone():%H:%M} - {strength}{prompt}"
    2. 定位 `ai_diffusion/model/model.py` 第 1623 行,将 job.timestamp.strftime("%Y%m%d-%H%M%S") 修改为 job.timestamp.astimezone().strftime("%Y%m%d-%H%M%S")
    3. 手动补丁后需重启 Krita 或重新加载插件方可生效。
  3. 补丁后建议参考日常操作验证:生成新任务、查看历史缩略图、导出文件检查文件名。

验证方法

生成一个新的图像任务,对比历史缩略图中显示的时间与系统当前本地时间,两者应一致(误差在秒级)。同时从历史记录导出文件,检查文件名中的时间戳是否为本地时间。若在 CEST 夏令时期间,原偏差为 2 小时,修复后应无偏移。

参考来源

Acly/krita-ai-diffusion #2551

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19750

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注