C#:如何计算相对时间?

二糊 发布于 2011/07/18 16:01
阅读 647
收藏 0

给出一个详细的 DateTime 值,如何显示相对时间?

比如类似OSC的:

  • 2 小时前
  • 3 天前
  • 1个月前

等等。谢谢。

加载中
0
我爱C#
我爱C#
if (delta < 2 * MINUTE)
{
  return "a minute ago";
}
if (delta < 45 * MINUTE)
{
  return ts.Minutes + " minutes ago";
}
if (delta < 90 * MINUTE)
{
  return "an hour ago";
}
if (delta < 24 * HOUR)
{
  return ts.Hours + " hours ago";
}
if (delta < 48 * HOUR)
{
  return "yesterday";
}
if (delta < 30 * DAY)
{
  return ts.Days + " days ago";
}
if (delta < 12 * MONTH)
{
  int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
  return months <= 1 ? "one month ago" : months + " months ago";
}
else
{
  int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
  return years <= 1 ? "one year ago" : years + " years ago";
}
1
晓寒
晓寒
            DateTime oldDateTime = ...//old date time
            TimeSpan timeSpan = DateTime.Now - oldDateTime;
            //int days = timeSpan.Days;
            //int hours = timeSpan.Hours;
            //int minutes = timeSpan.Minutes;
1
笨蛋EGG
笨蛋EGG
            DateTime iNow = DateTime.Now;
            TimeSpan iTSpan = new TimeSpan();
            iTSpan = iNow.Subtract(aOldTime);

            String iMsg = "";
            Double iMinutes = iTSpan.TotalMinutes;
            //使用switch
            if (iMinutes > 60)
            {
                iMsg = Math.Round(iTSpan.TotalHours).ToString() + "小时";
            }

            if (iMinutes > 1440)
            {
                iMsg = Math.Round(iTSpan.TotalDays).ToString() + "天";
            }

            MessageBox.Show(iMsg);
返回顶部
顶部