Skip to content

datetime.now with tzinfo behaviour does not match built-in behaviour #586

@Immodal

Description

@Immodal

I ran these tests on Python 3.12.8, Freezegun 1.5.5

Basically, on my laptop that is set to AEST, I get differing behaviours when I run tests with and without freezegun when using datetime.now(<timezone>)

Baseline:

def test_get_date() -> None:
    print()
    print(datetime.now())
    print(datetime.now(ZoneInfo("UTC")))
    print(datetime.now().astimezone(ZoneInfo("UTC")))

Results in:

tests/test_configs.py::test_get_date 
2025-11-03 14:39:52.965645
2025-11-03 03:39:52.965661+00:00
2025-11-03 03:39:52.966007+00:00

Freezegun:

@freeze_time("2025-11-03 03:00:00", tz_offset=11)
def test_get_date_freezegun() -> None:
    print()
    print(datetime.now())
    print(datetime.now(ZoneInfo("UTC")))
    print(datetime.now().astimezone(ZoneInfo("UTC")))

Results in:

tests/test_configs.py::test_get_date_freezegun 
2025-11-03 14:00:00
2025-11-03 14:00:00+00:00
2025-11-03 03:00:00+00:00

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions