Files
amacocian ab1b604aec Code cleanup (#1026)
* Resolve warnings and move shared props to Directory.Build.props and Directory.Packages.props

* Cleanup more messages

* Fix more messages

* Fix build issues
2025-06-29 17:32:52 +02:00

31 lines
1.2 KiB
C#

namespace Daybreak.Shared.Utils;
public static class DateTimeExtensions
{
/// <summary>
/// Converts <see cref="DateTime"/> to <see cref="DateTimeOffset"/> safely and clamps the values between <see cref="DateTimeOffset.MinValue"/> and <see cref="DateTimeOffset.MaxValue"/>
/// </summary>
public static DateTimeOffset ToSafeDateTimeOffset(this DateTime dateTime)
{
var utcDateTime = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);
return utcDateTime.ToUniversalTime() <= DateTimeOffset.MinValue.UtcDateTime
? DateTimeOffset.MinValue
: utcDateTime.ToUniversalTime() >= DateTimeOffset.MaxValue.UtcDateTime
? DateTimeOffset.MaxValue
: new DateTimeOffset(utcDateTime);
}
/// <summary>
/// Converts <see cref="DateTime"/> to <see cref="DateTimeOffset"/> safely and clamps the values between <see cref="DateTimeOffset.MinValue"/> and <see cref="DateTimeOffset.MaxValue"/>
/// </summary>
public static DateTimeOffset? ToSafeDateTimeOffset(this DateTime? dateTime)
{
if (!dateTime.HasValue)
{
return default;
}
return dateTime.Value.ToSafeDateTimeOffset();
}
}