将时间转换为易于阅读的字符串

spr*_*t12 3 c# sql-server datetime

什么是从sql server获取日期时间并将其转换为使用友好字符串的最佳方式:

如果超过1天> 1天前.
超过7天> 1周前
1年前
3分钟前
56秒之前.

这可以轻松完成吗?

hun*_*ter 6

你最好的办法是制作一个DateTime扩展方法:

public static class DateTimeExtensions
{
    public static string ToRelative(this DateTime value)
    {        
        DateTime now = DateTime.Now; //maybe UtcNow if you're into that

        TimeSpan span = new TimeSpan(now.Ticks - value.Ticks);
        double seconds = Math.Abs(ts.TotalSeconds);

        if (seconds < 60)
            return string.Format("{0} seconds ago", span.Seconds);

        if (seconds < 2700)
            return string.Format("{0} minutes ago", span.Minutes);

        if (seconds < 86400)
            return string.Format("{0} hours ago", span.Hours);

        // repeat for greater "ago" times...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后DateTime像你这样打电话给你的价值:

myDateTime.ToRelative();
Run Code Online (Sandbox Code Playgroud)