C# 需要有关修改以非正式方式显示日期的方法的帮助吗

C# 需要有关修改以非正式方式显示日期的方法的帮助吗,c#,asp.net,C#,Asp.net,如果日期是几个月前或一年前,则以下方法将返回null。如果我想将日期显示为“2个月前”或“1年前”。我应该如何修改以下方法 // 1. // Get time span elapsed since the date. TimeSpan s = DateTime.Now.Subtract(d); // 2. // Get total number of days elapsed. int dayDiff = (in

如果日期是几个月前或一年前,则以下方法将返回null。如果我想将日期显示为“2个月前”或“1年前”。我应该如何修改以下方法

 // 1.
        // Get time span elapsed since the date.
        TimeSpan s = DateTime.Now.Subtract(d);

        // 2.
        // Get total number of days elapsed.
        int dayDiff = (int)s.TotalDays;

        // 3.
        // Get total number of seconds elapsed.
        int secDiff = (int)s.TotalSeconds;

        // 4.
        // Don't allow out of range values.
        if (dayDiff < 0 || dayDiff >= 31)

        {
            return null;
        }

        // 5.
        // Handle same-day times.
        if (dayDiff == 0)
        {
            // A.
            // Less than one minute ago.
            if (secDiff < 60)
            {
                return "just now";
            }
            // B.
            // Less than 2 minutes ago.
            if (secDiff < 120)
            {
                return "1 minute ago";
            }
            // C.
            // Less than one hour ago.
            if (secDiff < 3600)
            {
                return string.Format("{0} minutes ago",
                    Math.Floor((double)secDiff / 60));
            }
            // D.
            // Less than 2 hours ago.
            if (secDiff < 7200)
            {
                return "1 hour ago";
            }
            // E.
            // Less than one day ago.
            if (secDiff < 86400)
            {
                return string.Format("{0} hours ago",
                    Math.Floor((double)secDiff / 3600));
            }
        }
        // 6.
        // Handle previous days.
        if (dayDiff == 1)
        {
            return "yesterday";
        }
        if (dayDiff < 7)
        {
            return string.Format("{0} days ago",
            dayDiff);
        }
        if (dayDiff < 31)
        {
            return string.Format("{0} weeks ago",
            Math.Ceiling((double)dayDiff / 7));
        }
        return null;
    }
//1。
//获取自日期起经过的时间跨度。
TimeSpan s=日期时间。现在。减去(d);
// 2.
//获取经过的总天数。
int dayDiff=(int)s.TotalDays;
// 3.
//获取经过的总秒数。
int secDiff=(int)s.TotalSeconds;
// 4.
//不允许值超出范围。
如果(dayDiff<0 | | dayDiff>=31)
{
返回null;
}
// 5.
//处理同一天的时间。
如果(dayDiff==0)
{
//A。
//不到一分钟前。
if(secDiff<60)
{
返回“刚才”;
}
//B。
//不到两分钟前。
if(secDiff<120)
{
返回“1分钟前”;
}
//C。
//不到一小时前。
if(secDiff<3600)
{
返回string.Format(“{0}分钟前”,
数学层((双)secDiff/60);
}
//D。
//不到两小时前。
if(secDiff<7200)
{
返回“1小时前”;
}
//E。
//不到一天前。
如果(secDiff<86400)
{
返回string.Format(“{0}小时前”,
数学层((双)secDiff/3600);
}
}
// 6.
//处理前几天。
如果(dayDiff==1)
{
返回“昨天”;
}
如果(日差<7)
{
返回string.Format(“{0}天前”,
dayDiff);
}
如果(日差<31)
{
返回string.Format(“{0}周前”,
数学上限((双)日差/7));
}
返回null;
}

您可以直接比较时间跨度,如:

TimeSpan s = DateTime.Now.Subtract(d);
if (s < TimeSpan.FromDays(1))
{
 // ...
}
else if (s < TimeSpan.FromMonth(1))
{
 // ...
}
// ...
TimeSpan s=DateTime.Now.Subtract(d);
如果(s
只需按照您想要的方式组合(抱歉,我无法真正解析您的问题) 我想你可能会喜欢:

TimeSpan s = DateTime.Now.Subtract(d);
if (s < TimeSpan.FromDays(1))
{
 return string.Format("{0:0} hour(s) ago", s.TotalHours);
}
else if (s < TimeSpan.FromDays(7))
{
 return string.Format("{0:0} day(s) ago", s.TotalDays);
}
// ...
TimeSpan s=DateTime.Now.Subtract(d);
如果(s
在if块之后:
if(dayDiff<31){…}
插入以下代码:

if (dayDiff < 365)
{
    return string.Format("{0} month(s) ago", Math.Ceiling((double)dayDiff / 31));
}
else
{
    return string.Format("{0} year(s) ago", Math.Ceiling((double)dayDiff / 365));
}
if(dayDiff<365)
{
返回string.Format(“{0}个月前”,Math.天花((double)dayDiff/31));
}
其他的
{
返回string.Format(“{0}年前”,Math.天花((double)dayDiff/365));
}