Skip to content

If you have the /etc/timezone file set to a timezone string, pendulum.UTC has that timezone's utcoffset instead of None #814

@gibsondan

Description

@gibsondan
  • I am on the latest Pendulum version.
  • I have searched the issues of this repo and believe that this is not a duplicate.
  • OS version and name: linux docker container (python3.10-slim) running on a mac
  • Pendulum version: 3.0.0

Issue

This appears to be a bug in ZoneInfo that moved into pendulum in the 3.0 release now that TimeZone subclasses ZoneInfo.

Simple repro:

In a Docker container:

FROM python:3.10-slim

RUN pip install pendulum

RUN echo "Asia/Shanghai" > /etc/timezone

Then in Python:

import pendulum, datetime
pendulum.UTC.utcoffset(datetime.datetime(2024, 3, 12, 0, 0, 0, 0)))

outputs datetime.timedelta(seconds=28800) (the utcoffset of the timezone in /etc/timezone) instead of the expected None return value for UTC.

This breaks all kinds of things.

The same issue happens with a ZoneInfo object:

datetime.timedelta(seconds=28800)

See https://stackoverflow.com/questions/74467999/why-does-zoneinfoutc-do-different-time-conversions-from-timezone-utc for a similar report on ZoneInfo.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions