From fc16bbbb3218d6f3f6f5e19aa96120c9f11f1887 Mon Sep 17 00:00:00 2001 From: Chris Thames Date: Sat, 5 Feb 2022 13:31:45 -0600 Subject: [PATCH] Update DateTimeExtensions.cs DateTimeOffset Include DateTimeOffset arg to extension method ToUnixTimeMs. Made the assumption to use 'UtcDateTime' to use original DateTime implementation. Possibly a better way exists. Note 1: Due to `private static ToDateTimeSinceUnixEpoch` and `internal DateTimeSerializer.LocalTimeZone` had to re-implement to get it to work. Note 2: `ToUnixTimeMsAlt` should probably also have a DateTimeOffset implementation, but I did not implement. --- src/ServiceStack.Text/DateTimeExtensions.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/ServiceStack.Text/DateTimeExtensions.cs b/src/ServiceStack.Text/DateTimeExtensions.cs index 0373037f3..4c79c3792 100644 --- a/src/ServiceStack.Text/DateTimeExtensions.cs +++ b/src/ServiceStack.Text/DateTimeExtensions.cs @@ -45,6 +45,12 @@ public static long ToUnixTimeMsAlt(this DateTime dateTime) { return (dateTime.ToStableUniversalTime().Ticks - UnixEpoch) / TimeSpan.TicksPerMillisecond; } + + public static long ToUnixTimeMs(this DateTimeOffset dateTimeOffset) + { + var universal = ToDateTimeSinceUnixEpoch(dateTimeOffset); + return (long)universal.TotalMilliseconds; + } public static long ToUnixTimeMs(this DateTime dateTime) { @@ -56,6 +62,9 @@ public static long ToUnixTime(this DateTime dateTime) { return (dateTime.ToDateTimeSinceUnixEpoch().Ticks) / TimeSpan.TicksPerSecond; } + + private static TimeSpan ToDateTimeSinceUnixEpoch(this DateTimeOffset dateTimeOffset) + => ToDateTimeSinceUnixEpoch(dateTimeOffset.UtcDateTime); private static TimeSpan ToDateTimeSinceUnixEpoch(this DateTime dateTime) {