@@ -430,31 +430,43 @@ private string GetDisplayText()
430
430
if ( ShowAsDateTime )
431
431
return DateTime . UnixEpoch . AddSeconds ( timestamp ) . ToLocalTime ( ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) ;
432
432
433
- var today = DateTime . Today ;
433
+ var now = DateTime . Now ;
434
434
var localTime = DateTime . UnixEpoch . AddSeconds ( timestamp ) . ToLocalTime ( ) ;
435
+ var span = now - localTime ;
436
+ if ( span . TotalMinutes < 1 )
437
+ return App . Text ( "Period.JustNow" ) ;
435
438
436
- if ( localTime >= today )
437
- {
438
- var now = DateTime . Now ;
439
- var timespan = now - localTime ;
440
- if ( timespan . TotalHours > 1 )
441
- return App . Text ( "Period.HoursAgo" , ( int ) timespan . TotalHours ) ;
439
+ if ( span . TotalHours < 1 )
440
+ return App . Text ( "Period.MinutesAgo" , ( int ) span . TotalMinutes ) ;
442
441
443
- return timespan . TotalMinutes < 1 ? App . Text ( "Period.JustNow" ) : App . Text ( "Period.MinutesAgo" , ( int ) timespan . TotalMinutes ) ;
444
- }
442
+ if ( span . TotalDays < 1 )
443
+ return App . Text ( "Period.HoursAgo" , ( int ) span . TotalHours ) ;
445
444
446
- var diffYear = today . Year - localTime . Year ;
447
- if ( diffYear == 0 )
445
+ var lastDay = now . AddDays ( - 1 ) . Date ;
446
+ if ( localTime >= lastDay )
447
+ return App . Text ( "Period.Yesterday" ) ;
448
+
449
+ if ( ( localTime . Year == now . Year && localTime . Month == now . Month ) || span . TotalDays < 28 )
448
450
{
449
- var diffMonth = today . Month - localTime . Month ;
450
- if ( diffMonth > 0 )
451
- return diffMonth == 1 ? App . Text ( "Period.LastMonth" ) : App . Text ( "Period.MonthsAgo" , diffMonth ) ;
451
+ var diffDay = now . Date - localTime . Date ;
452
+ return App . Text ( "Period.DaysAgo" , ( int ) diffDay . TotalDays ) ;
453
+ }
452
454
453
- var diffDay = today . Day - localTime . Day ;
454
- return diffDay == 1 ? App . Text ( "Period.Yesterday" ) : App . Text ( "Period.DaysAgo" , diffDay ) ;
455
+ var lastMonth = now . AddMonths ( - 1 ) . Date ;
456
+ if ( localTime . Year == lastMonth . Year && localTime . Month == lastMonth . Month )
457
+ return App . Text ( "Period.LastMonth" ) ;
458
+
459
+ if ( localTime . Year == now . Year || localTime > now . AddMonths ( - 11 ) )
460
+ {
461
+ var diffMonth = ( 12 + now . Month - localTime . Month ) % 12 ;
462
+ return App . Text ( "Period.MonthsAgo" , diffMonth ) ;
455
463
}
456
464
457
- return diffYear == 1 ? App . Text ( "Period.LastYear" ) : App . Text ( "Period.YearsAgo" , diffYear ) ;
465
+ var diffYear = now . Year - localTime . Year ;
466
+ if ( diffYear == 1 )
467
+ return App . Text ( "Period.LastYear" ) ;
468
+
469
+ return App . Text ( "Period.YearsAgo" , diffYear ) ;
458
470
}
459
471
460
472
private IDisposable _refreshTimer = null ;
0 commit comments