You say you use "normal datetime objects", but apparently they are timezone naive instead of timezone aware.
The timezone filter "forces conversion of a single value to an arbitrary timezone" while the timezone tag just sets the current timezone until the endtimezone
tag.
Your datetimeobject
is timezone naive and the timezone filter will convert it to a timezone aware datetime with the default timezone and then represent it in the timezone given to the filter.