使用asp.net计算时间跨度[重复]
Posted
技术标签:
【中文标题】使用asp.net计算时间跨度[重复]【英文标题】:Calculating Timespan using asp.net [duplicate] 【发布时间】:2011-04-28 12:02:11 【问题描述】:可能重复:How do I calculate relative time?
我想使用 asp.net c# 来计算上传文件的时间跨度。例如,如果我两周前上传了一个文件,我的文字将显示“2 周前上传”,或者如果我在 4 个月前上传了一个文件,我的文字将显示“4 个月前上传”
任何人都可以给我一些关于如何解决这个问题的提示。
谢谢
【问题讨论】:
【参考方案1】:我遇到了这个问题并创建了TimeSpan
扩展类,如下所示。
您只需在 TimeSpan 实例上使用 ToFriendlyString()
。
public static class TimeSpanExtensions
public static string ToFriendlyString(this TimeSpan t)
return ToFriendlyString(t, Thread.CurrentThread.CurrentCulture);
public static string ToFriendlyString(this TimeSpan t, CultureInfo cultureInfo)
if(cultureInfo.IetfLanguageTag.StartsWith("en"))
return ToFriendlyString_English(t);
else
throw new NotSupportedException("This culture is currently not supported.");
private static string ToFriendlyString_English(TimeSpan t)
int years = t.Days/365;
int months = t.Days/30;
int weeks = t.Days/7;
if (years > 0)
return string.Format("0 year1", years, years > 1 ? "s" : "");
if (months > 0)
return string.Format("0 month1", months, months > 1 ? "s" : "");
if (weeks > 0)
return string.Format("0 week1", weeks, weeks > 1 ? "s" : "");
if (t.Days > 0)
return string.Format("0 day1", t.Days, t.Days > 1 ? "s" : "");
if (t.Hours > 0)
return string.Format("0 hour1", t.Hours, t.Hours > 1 ? "s" : "");
if (t.Minutes > 0)
return string.Format("0 minute1", t.Minutes, t.Minutes > 1 ? "s" : "");
if (t.Seconds > 0)
return string.Format("0 second1", t.Seconds, t.Seconds > 1 ? "s" : "");
return "now";
【讨论】:
【参考方案2】:您可以使用DateTime.Now - dateTimeOfUpload
获取时间跨度。这将产生一个TimeSpan 对象。从此对象中,您可以使用例如TotalDays
表示 dateTimeOfUpload
过去的月数。
【讨论】:
以上是关于使用asp.net计算时间跨度[重复]的主要内容,如果未能解决你的问题,请参考以下文章