Europe/Madrid time zone
1:11PMCET
CETUTC+1+6 h vs New York (you)
- Next transition: Sunday, March 28, 2027: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Next transition: Sunday, October 31, 2027: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Next transition: Sunday, March 26, 2028: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Next transition: Sunday, October 29, 2028: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Next transition: Sunday, March 25, 2029: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Next transition: Sunday, October 28, 2029: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Next transition: Sunday, March 31, 2030: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Next transition: Sunday, October 27, 2030: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Next transition: Sunday, March 30, 2031: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Next transition: Sunday, October 26, 2031: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Next transition: Sunday, March 28, 2032: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Next transition: Sunday, October 31, 2032: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
About Europe/Madrid
Europe/Madrid is the IANA time zone for Spain (mainland) in Spain. It currently keeps Central European Standard Time (CET, UTC+1) in winter and Central European Summer Time (CEST, UTC+2) in summer.
Its principal location is Madrid at 40.40° N, 3.68° W.
Abbreviations in use: CET, CEST. Offset page: UTC+1.
Rule for future years (POSIX TZ string)
CET-1CEST,M3.5.0,M10.5.0/3
The standard time is called CET and is UTC+1. POSIX writes the offset with the opposite sign (west of Greenwich is positive), which is why the string says "-1". Daylight saving time is called CEST and is UTC+2. It starts on the last Sunday of March at 02:00 and ends on the last Sunday of October at 03:00, local time. Software that has no full tzdata copy, such as many embedded devices, can use this string directly as the TZ environment variable.
Upcoming transitions
- Sunday, March 28, 2027: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Sunday, October 31, 2027: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Sunday, March 26, 2028: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Sunday, October 29, 2028: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Sunday, March 25, 2029: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Sunday, October 28, 2029: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Sunday, March 31, 2030: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Sunday, October 27, 2030: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Sunday, March 30, 2031: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Sunday, October 26, 2031: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
- Sunday, March 28, 2032: at 2:00 AM clocks go forward 1 hour to 3:00 AM (CEST, UTC+2)
- Sunday, October 31, 2032: at 3:00 AM clocks go back 1 hour to 2:00 AM (CET, UTC+1)
Computed from tzdata 2026f; local times are read on the clock just before each change.
History of Europe/Madrid since 1970
The record starts with local mean time (UTC−0:15), which ended on December 31, 1900. The first daylight saving time in the record is in 1918.
| Years | Clocks | Abbreviations |
|---|---|---|
| 1970–1973 | UTC+1 all year | CET |
| 1974 onward | UTC+1 in winter, UTC+2 in summer | CET, CEST |
Before 1970
34 offset changes before 1970 in the record; the first 12 and the last 12:
- Monday, December 31, 1900: UTC−0:15 → UTC+0 (WET)
- Monday, April 15, 1918: UTC+0 → UTC+1 (WEST), daylight saving time
- Monday, October 7, 1918: UTC+1 → UTC+0 (WET)
- Sunday, April 6, 1919: UTC+0 → UTC+1 (WEST), daylight saving time
- Tuesday, October 7, 1919: UTC+1 → UTC+0 (WET)
- Wednesday, April 16, 1924: UTC+0 → UTC+1 (WEST), daylight saving time
- Sunday, October 5, 1924: UTC+1 → UTC+0 (WET)
- Saturday, April 17, 1926: UTC+0 → UTC+1 (WEST), daylight saving time
- Sunday, October 3, 1926: UTC+1 → UTC+0 (WET)
- Saturday, April 9, 1927: UTC+0 → UTC+1 (WEST), daylight saving time
- Sunday, October 2, 1927: UTC+1 → UTC+0 (WET)
- Sunday, April 15, 1928: UTC+0 → UTC+1 (WEST), daylight saving time
- Saturday, May 2, 1942: UTC+1 → UTC+2 (CEST), daylight saving time
- Tuesday, September 1, 1942: UTC+2 → UTC+1 (CET)
- Saturday, April 17, 1943: UTC+1 → UTC+2 (CEST), daylight saving time
- Sunday, October 3, 1943: UTC+2 → UTC+1 (CET)
- Saturday, April 15, 1944: UTC+1 → UTC+2 (CEST), daylight saving time
- Sunday, October 1, 1944: UTC+2 → UTC+1 (CET)
- Saturday, April 14, 1945: UTC+1 → UTC+2 (CEST), daylight saving time
- Sunday, September 30, 1945: UTC+2 → UTC+1 (CET)
- Saturday, April 13, 1946: UTC+1 → UTC+2 (CEST), daylight saving time
- Sunday, September 29, 1946: UTC+2 → UTC+1 (CET)
- Saturday, April 30, 1949: UTC+1 → UTC+2 (CEST), daylight saving time
- Sunday, October 2, 1949: UTC+2 → UTC+1 (CET)
tzdata commits to accuracy from 1970 for every zone (zone1970.tab); earlier entries are historical research and may be incomplete.
Aliases and zones with the same clock
Other zones that keep exactly the same time under the current rules (but have a different history): Africa/Ceuta, Europe/Andorra, Europe/Belgrade, Europe/Berlin, Europe/Brussels, Europe/Budapest, Europe/Gibraltar, Europe/Malta, Europe/Paris, Europe/Prague, Europe/Rome, Europe/Tirane.
Places on Europe/Madrid
Convert Madrid time
Using Europe/Madrid in code
Every major platform reads the same IANA ID. Store instants in UTC and convert with the ID at display time; never store a fixed offset for a place that has daylight saving time.
// JavaScript
new Date().toLocaleString('en-US', { timeZone: 'Europe/Madrid' })
# Python 3.9+
from zoneinfo import ZoneInfo
from datetime import datetime
datetime.now(ZoneInfo('Europe/Madrid'))
// Java
java.time.ZonedDateTime.now(java.time.ZoneId.of("Europe/Madrid"))
// Go
loc, _ := time.LoadLocation("Europe/Madrid")
time.Now().In(loc)
-- PostgreSQL
SELECT now() AT TIME ZONE 'Europe/Madrid';
# Shell
TZ='Europe/Madrid' date Platforms ship their own copy of tzdata and update it on their own schedule. After a rule change, outputs can differ until the platform updates; this page uses tzdata 2026f.