From c87a6b517a4aa3dacef3a41ad030b597f626a8de Mon Sep 17 00:00:00 2001 From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch> Date: Sun, 11 Feb 2018 22:07:38 +0100 Subject: [PATCH] Allow for negative time deltas (in the future). --- ATxCommon/TimeUtils.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/ATxCommon/TimeUtils.cs b/ATxCommon/TimeUtils.cs index c9f9aa0..552ebf6 100644 --- a/ATxCommon/TimeUtils.cs +++ b/ATxCommon/TimeUtils.cs @@ -36,6 +36,12 @@ namespace ATxCommon /// <param name="delta">The time span in seconds.</param> /// <returns>A string describing the duration, e.g. "2 hours 34 minutes".</returns> public static string SecondsToHuman(long delta) { + var desc = "ago"; + if (delta < 0) { + delta *= -1; + desc = "in the future"; + } + const int second = 1; const int minute = second * 60; const int hour = minute * 60; @@ -43,24 +49,24 @@ namespace ATxCommon const int week = day * 7; if (delta < minute) - return delta + " seconds"; + return $"{delta} seconds {desc}"; if (delta < 2 * minute) - return "a minute"; + return $"a minute {desc}"; if (delta < hour) - return delta / minute + " minutes"; + return $"{delta / minute} minutes {desc}"; if (delta < day) { var hours = delta / hour; var mins = (delta - hours * hour) / minute; if (mins > 0) - return hours + " hours " + mins + " minutes"; - return hours + " hours"; + return $"{hours} hours {mins} minutes {desc}"; + return $"{hours} hours {desc}"; } if (delta < 2 * week) - return delta / day + " days"; + return $"{delta / day} days ${desc}"; return delta / week + " weeks"; } -- GitLab