Skip to content

Commit

Permalink
Update RelativeDate.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
ghost1372 committed Feb 25, 2025
1 parent 5f075ac commit 6e4c370
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions dev/DevWinUI/Common/RelativeDate/RelativeDate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,37 @@ namespace DevWinUI;
public readonly struct RelativeDate : IComparable, IComparable<RelativeDate>, IEquatable<RelativeDate>, IFormattable
{
public readonly ResourceHelper resourceHelper;
private TimeProvider TimeProvider { get; }
private DateTime DateTime { get; }

public RelativeDate(DateTime dateTime)
public RelativeDate(DateTime dateTime, TimeProvider? timeProvider)
{
if (dateTime.Kind == DateTimeKind.Unspecified)
throw new ArgumentException("Cannot determine is the argument is a local datetime or UTC datetime", nameof(dateTime));
throw new ArgumentException("Cannot determine if the argument is a local datetime or UTC datetime", nameof(dateTime));

resourceHelper = new ResourceHelper();
DateTime = dateTime;
DateTime = dateTime.ToUniversalTime();
TimeProvider = timeProvider ?? TimeProvider.System;
}

public RelativeDate(DateTime dateTime)
: this(dateTime, timeProvider: null)
{
}

public static RelativeDate Get(DateTime dateTime) => new(dateTime);

public static RelativeDate Get(DateTimeOffset dateTime) => new(dateTime.UtcDateTime);

public static RelativeDate Get(DateTime dateTime, TimeProvider? timeProvider) => new(dateTime, timeProvider);

public static RelativeDate Get(DateTimeOffset dateTime, TimeProvider? timeProvider) => new(dateTime.UtcDateTime, timeProvider);

public override string ToString() => ToString(format: null, formatProvider: null);

public string ToString(string? format, IFormatProvider? formatProvider)
{
var now = DateTime.Kind == DateTimeKind.Utc ? DateTimeService.UtcNow : DateTimeService.Now;

var now = TimeProvider.GetUtcNow().UtcDateTime;
var delta = now - DateTime;
var culture = formatProvider as CultureInfo;

Expand Down

0 comments on commit 6e4c370

Please sign in to comment.