From dddd4bca77cf24cfd98b85906bef4e12947d8a46 Mon Sep 17 00:00:00 2001 From: lihan3238 Date: Tue, 5 May 2026 23:32:57 +0800 Subject: [PATCH 1/2] feat(DateTime): add toEpochSeconds method Adds `DateTime.toEpochSeconds` which returns the Unix timestamp in seconds (integer), complementing the existing `toEpochMillis`. Closes #6148 --- packages/effect/src/DateTime.ts | 8 ++++++++ packages/effect/src/internal/dateTime.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/packages/effect/src/DateTime.ts b/packages/effect/src/DateTime.ts index 5f11606c891..3a084203538 100644 --- a/packages/effect/src/DateTime.ts +++ b/packages/effect/src/DateTime.ts @@ -938,6 +938,14 @@ export const zonedOffsetIso: (self: Zoned) => string = Internal.zonedOffsetIso */ export const toEpochMillis: (self: DateTime) => number = Internal.toEpochMillis +/** + * Get the seconds since the Unix epoch of a `DateTime`. + * + * @since 3.16.0 + * @category conversions + */ +export const toEpochSeconds: (self: DateTime) => number = Internal.toEpochSeconds + /** * Remove the time aspect of a `DateTime`, first adjusting for the time * zone. It will return a `DateTime.Utc` only containing the date. diff --git a/packages/effect/src/internal/dateTime.ts b/packages/effect/src/internal/dateTime.ts index 544ecd86efa..a20b3942e1b 100644 --- a/packages/effect/src/internal/dateTime.ts +++ b/packages/effect/src/internal/dateTime.ts @@ -613,6 +613,9 @@ export const zonedOffsetIso = (self: DateTime.Zoned): string => offsetToString(z /** @internal */ export const toEpochMillis = (self: DateTime.DateTime): number => self.epochMillis +/** @internal */ +export const toEpochSeconds = (self: DateTime.DateTime): number => Math.floor(self.epochMillis / 1000) + /** @internal */ export const removeTime = (self: DateTime.DateTime): DateTime.Utc => withDate(self, (date) => { From abf9d4b2d7151c5a4f2ead9df6c7fe786ee847df Mon Sep 17 00:00:00 2001 From: lihan3238 Date: Fri, 8 May 2026 12:12:44 +0800 Subject: [PATCH 2/2] add changeset --- .changeset/feat-datetime-epoch.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/feat-datetime-epoch.md diff --git a/.changeset/feat-datetime-epoch.md b/.changeset/feat-datetime-epoch.md new file mode 100644 index 00000000000..57e172520ca --- /dev/null +++ b/.changeset/feat-datetime-epoch.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +feat(DateTime): add toEpochSeconds method