You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alpine 3.17容器中Python datetime.now()未返回正确系统时间问题

问题排查:Alpine镜像中Python datetime.now()返回UTC而非IST时区时间

核心原因

  • Alpine Linux默认未预装完整的tzdata时区数据库包。虽然系统通过TZ环境变量配置显示IST时间(date命令正常输出),但Python的datetime模块依赖tzdata提供的时区数据文件来识别本地时区,缺失该包时会默认 fallback 到UTC。
  • 系统层面的时区显示仅依赖环境变量,而Python的时区解析需要实际的时区数据库支持。

解决步骤

  1. 安装tzdata包
    在Dockerfile中添加安装命令,确保构建镜像时包含时区数据:

    RUN apk add --no-cache tzdata
    
  2. 设置时区环境变量
    在Dockerfile中指定IST对应的时区(Asia/Kolkata):

    ENV TZ=Asia/Kolkata
    

    或者在启动容器时临时传入:

    docker run -e TZ=Asia/Kolkata your-fastapi-image
    
  3. 验证修复
    重新构建镜像并运行,执行以下代码即可得到IST时间:

    import datetime
    print(datetime.datetime.now())
    

内容的提问来源于stack exchange,提问作者Hrm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:33:13