使用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计算时间跨度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

我想计算总时间是asp.net [重复]

使用 C# 计算 MVC 模型中的时间跨度

ASP.NET - 客户端和服务器端都有一个通用脚本? [重复]

用于根据时间戳计算时间跨度的 SQL 查询

根据大致时间跨度计算大致日期

ActionScript 3.0 + 计算两个日期之间的时间跨度?