public object Convert(object value, Type targetType, object parameter, string language) { var setting = App.RoamingSettings.Read(Constants.TIMESTAMP_STYLE, TimestampStyle.Absolute); if (value is not DateTime t) { t = value is DateTimeOffset dto ? dto.LocalDateTime : default; } t = t.ToUniversalTime(); var moment = new Moment(t); if (t != default) { switch (setting) { case TimestampStyle.Relative: return(t.Humanize(true)); case TimestampStyle.Absolute: return(moment.Calendar()); case TimestampStyle.Both: return($"{t.Humanize(true)} - {moment.Calendar()}"); } } return(""); }
public void CalendarTest() { Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN"); var m = new Moment(); var str = m.Calendar(); Assert.AreEqual(str.IndexOf("今天"), 0, "should be Today"); var str2 = m.Calendar(DateTime.Now.AddDays(-1)); Assert.AreEqual(str2.IndexOf("明天"), 0, "should be Tomorrow"); var str3 = m.Calendar(DateTime.Now.AddDays(1)); Assert.AreEqual(str3.IndexOf("昨天"), 0, "should be Yesterday"); }