Time Zones and Date Ranges
Localizing and generating dates.
Time Zones and Date Ranges is a free Data Science Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Data Science Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Time Has a Place
9 a.m. in Tokyo is not 9 a.m. in London. Real-world timestamps need a time zone so they mean the same moment everywhere. 🌍
Naive vs Aware
A timestamp with no zone is called naive. One that knows its zone is aware. Mixing the two leads to silent, painful bugs.
ts = pd.Timestamp("2024-03-15 09:00")
print(ts.tz) # None means naiveAttach a Zone
Use tz_localize to stamp a naive time with its true zone. This says where the clock reading was actually taken.
ts = ts.tz_localize("Asia/Tokyo")Convert Between Zones
Once aware, switch zones with tz_convert. The underlying instant stays fixed; only the displayed clock changes.
ts.tz_convert("Europe/London")Localize, Then Convert
The golden order is localize first, convert second. tz_localize sets the origin zone; tz_convert moves it. Never convert a naive value.
s.dt.tz_localize("UTC").dt.tz_convert("US/Eastern")UTC Is Your Anchor
Store data in UTC and convert only for display. This avoids confusion and sidesteps daylight-saving headaches entirely.
pd.to_datetime(df["ts"], utc=True)Generate a Date Range
Need a clean sequence of dates? date_range builds one from a start, an end, and a frequency in a single call.
pd.date_range("2024-01-01", "2024-01-07")Set the Frequency
The freq argument controls spacing: "D" for daily, "h" for hourly, "ME" for month-end. The same rules you used to resample.
pd.date_range("2024-01-01", periods=12, freq="ME")Count Instead of End
Skip the end date and pass periods to get exactly that many steps. Handy when you know the count but not the finish.
pd.date_range("2024-01-01", periods=30, freq="D")Ranges as an Index
A date range makes a perfect index for a complete time series, exposing missing days you can then fill or flag.
df = df.reindex(pd.date_range("2024-01-01", periods=31))Build Date Features Fast
Pair date_range with the dt accessor to manufacture calendars, fill gaps, or label every day in a forecast horizon.
pd.date_range("2024-01-01", periods=7).day_name()Quick Check
You have a naive timestamp and want to show it in another zone.
Recap: Zones and Ranges
You localized and converted time zones the right way, leaned on UTC as an anchor, and built clean calendars with date_range. ⏰
Frequently asked questions
Is the “Time Zones and Date Ranges” lesson free?
Yes — the full text of “Time Zones and Date Ranges” is free to read here on the web, and the Data Science Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Data Science Academy course, upgrade to CoddyKit PRO.
What will I learn in “Time Zones and Date Ranges”?
Localizing and generating dates. You practise Data Science Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Data Science Academy?
No prior experience is required. Data Science Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Time Zones and Date Ranges” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Data Science Academy lesson?
Yes. Every Data Science Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Parse Strings Into Datetimes
- Extract Year, Month, and Weekday
- Resample to Daily or Monthly
- Time Zones and Date Ranges