Initializing playground…
← Back to roadmap

📅 Series.dt — Interactive Playground

The dt accessor provides vectorised datetime operations on a Series<Date>, mirroring pandas.Series.dt. All methods propagate null / undefined unchanged.
Edit any code block below and press ▶ Run (or Ctrl+Enter) to execute it live in your browser.

1 · Calendar Components

Extract individual date/time fields from each element.

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

2 · Day of Week & Quarter

dayofweek() returns Monday=0, Sunday=6 (same as pandas). quarter() returns 1–4.

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

3 · Boolean Properties

Check whether dates fall on month/quarter/year boundaries.

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

4 · strftime Formatting

Format dates using strftime-style directives.

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

5 · Normalization & Rounding

normalize() strips the time component (floor to midnight). floor(), ceil(), and round() support units: "D" (day), "H" (hour), "T"/"min" (minute), "S" (second), "L"/"ms" (millisecond).

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

6 · Null Propagation

Like pandas, all dt methods propagate null unchanged.

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

7 · total_seconds & date()

total_seconds() returns the Unix timestamp in seconds. date() returns the date portion (midnight-normalized).

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

8 · Combining dt with Other Operations

Use dt accessors together to extract and combine multiple fields.

TypeScript
Click ▶ Run to execute
Ctrl+Enter to run · Tab to indent

API Reference

Access via series.dt on any Series<Date>. All methods return a new Series and propagate nulls.

// Calendar components
series.dt.year()         → Series<number>
series.dt.month()        → Series<number>  // 1–12
series.dt.day()          → Series<number>  // 1–31
series.dt.hour()         → Series<number>  // 0–23
series.dt.minute()       → Series<number>  // 0–59
series.dt.second()       → Series<number>  // 0–59

// Derived fields
series.dt.dayofweek()    → Series<number>  // Mon=0, Sun=6
series.dt.dayofyear()    → Series<number>  // 1–366
series.dt.quarter()      → Series<number>  // 1–4

// Boolean properties
series.dt.is_month_start()   → Series<boolean>
series.dt.is_month_end()     → Series<boolean>
series.dt.is_quarter_start() → Series<boolean>
series.dt.is_quarter_end()   → Series<boolean>
series.dt.is_year_start()    → Series<boolean>
series.dt.is_year_end()      → Series<boolean>
series.dt.is_leap_year()     → Series<boolean>
series.dt.days_in_month()    → Series<number>

// Formatting & conversion
series.dt.strftime(fmt)      → Series<string>
series.dt.normalize()        → Series<Date>
series.dt.date()             → Series<Date>
series.dt.total_seconds()    → Series<number>

// Rounding (freq: "D" | "H" | "T" | "S" | "L")
series.dt.floor(freq)   → Series<Date>
series.dt.ceil(freq)    → Series<Date>
series.dt.round(freq)   → Series<Date>