Europe/Berlin
Europe/Berlin covers Berlin, Hamburg, Munich and the rest of Germany, at +01:00 standard time, switching to +02:00 in summer.
Worked examples
- A winter instant in Europe/Berlin
Europe/Berlin's UTC offset and DST status on a January date, converted to UTC.
- A summer instant in Europe/Berlin
Europe/Berlin's UTC offset and DST status on a July date, converted to UTC — compare against the winter example to see any DST shift.
- Converting Europe/Berlin to America/New_York
A worked conversion from Europe/Berlin to America/New_York for a specific instant.
TZ identifier and aliases
Europe/Berlin is the canonical identifier for German civil time. It has
no deprecated backward-compatibility alias in the tz database, but several
other genuinely distinct IANA zones — Europe/Copenhagen, Europe/Oslo,
Europe/Stockholm, Europe/Busingen (a small German exclave inside
Switzerland) and Svalbard's Arctic/Longyearbyen — currently share
identical rules and are folded into the same entry. These aren't aliases
of Berlin; they're separate countries' own zones that happen to run on the
same clock right now.
UTC offset and DST rule
Europe/Berlin is +01:00 (CET) on standard time and +02:00 (CEST)
during daylight saving, following the EU-harmonized rule: the last Sunday
in March through the last Sunday in October, both at 1am UTC — March 29
and October 25 in 2026.
Using it in cron, CI and Postgres
Set TZ=Europe/Berlin for a process that should schedule by German local
time. Postgres accepts it via SET TIME ZONE 'Europe/Berlin'; or the
timezone setting, applying the DST rule correctly for any date. Where a
scheduler supports a CRON_TZ=Europe/Berlin line, jobs run by local time
directly; GitHub Actions' schedule: trigger always evaluates in UTC with
no per-job timezone, so a job meant to fire at a fixed Berlin hour needs
its UTC equivalent recalculated across each DST boundary. Avoid the
2:00–3:00am local window for anything that must run exactly once — it's
skipped on the March transition and repeated on the October one.
History and quirks
Germany adopted Central European Time in 1893, and — aside from the
WWII-era occupation period, when much of Nazi-controlled Europe was forced
onto Berlin's own clock regardless of local solar time — has used it ever
since. West and East Germany's reunification in 1990 required no time zone
reconciliation, since both states had remained on the same CET/CEST rule
throughout the Cold War despite their political split. Germany's DST
schedule became the effective template for the EU-wide harmonization
directive adopted in the 1990s, which is why Europe/Berlin's transition
dates are now identical to Paris, Rome, Madrid, Amsterdam and Warsaw. The
zone's offset also underpins one of the more counterintuitive facts in
European geography: Germany spans roughly the same longitude range as the
UK and Spain, yet all three keep different clocks relative to true solar
time — Spain, in particular, runs on Berlin's clock despite sitting almost
directly south of London, a legacy of Franco-era alignment with Nazi
Germany that Spain never reversed.
Offsets and DST transitions on this page are computed from the IANA time zone database bundled with your browser; the rules described above were verified against tzdata 2026b when this page was published.
Frequently asked questions
- Does Europe/Berlin observe DST?
- Yes. In the current rule it begins the last Sunday in March and ends the last Sunday in October.
- What is the UTC offset of Europe/Berlin in winter/summer?
- Europe/Berlin is +01:00 on standard time and +02:00 during daylight saving time.
- Which cities use Europe/Berlin?
- Berlin, Hamburg, Munich, Köln all use the Europe/Berlin zone — also commonly known as Central European Time — along with the rest of Germany.
- What is the deprecated alias for this zone?
- Europe/Berlin has no widely-used deprecated alias, though Europe/Busingen is a separate IANA identifier that currently shares identical rules.