Skip to content

Instantly share code, notes, and snippets.

@codejockie
Created December 29, 2023 20:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codejockie/b3b339a2701722bcf129aa2d771eff20 to your computer and use it in GitHub Desktop.
Save codejockie/b3b339a2701722bcf129aa2d771eff20 to your computer and use it in GitHub Desktop.
A method to generate time elapsed since a given DateTime
void TimeAgo(DateTime date)
{
// 1000 millisecs = 1 sec
// 60 secs = 1 min
// 60 mins = 1 hr
// 24 hrs = 1 day
var diff = DateTime.Now - date;
var millis = diff.TotalMilliseconds;
var millisInDay = 86400 * 1000;
var daysInMillis = millis / millisInDay;
var remainder = daysInMillis % 1.0;
var fractionInDay = remainder * 24;
var days = Math.Floor(daysInMillis);
var minutes = Math.Round(60 * fractionInDay);
var hours = minutes / 60;
if (days < 1)
{
if (minutes == 0)
{
var secs = minutes * 60;
Console.WriteLine($"""{secs} second{(secs == 1 ? "" : "s")} ago""");
}
else if (minutes < 60)
{
Console.WriteLine($"""{minutes} minute{(minutes == 1 ? "" : "s")} ago""");
}
else
{
var hrs = Math.Floor(minutes / 60);
var mins = Math.Round(minutes % 60);
var hoursElapsed = $"""{hrs} hour{(hrs == 1 ? "" : "s")}""";
if (mins > 0)
{
hoursElapsed += $""" {mins} minute{(mins == 1 ? "" : "s")}""";
}
Console.WriteLine($"""{hoursElapsed} ago""");
}
}
else
{
var mins = Math.Round(minutes % 60);
var years = Math.Round(days / 365);
var timeElapsed = $"""{years} year{(years == 1 ? "" : "s")}""";
if (years < 1)
{
timeElapsed = $"""{days} day{(days == 1 ? "" : "s")}""";
}
else
{
var daysElapsed = Math.Round((days % 365 * 24) / 24);
timeElapsed += $""" {daysElapsed} day{(daysElapsed == 1 ? "" : "s")}""";
}
if (hours > 1)
{
var hrs = Math.Floor(hours);
mins = Math.Round(hours % 1.0 * 60);
timeElapsed += $""" {hrs} hour{(hrs == 1 ? "" : "s")}""";
}
if (mins > 0)
{
timeElapsed += $""" {mins} minute{(mins == 1 ? "" : "s")}""";
}
Console.WriteLine($"""{timeElapsed} ago""");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment