Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将时间转换为易于阅读的字符串_C#_Sql Server_Datetime - Fatal编程技术网

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

C# 将时间转换为易于阅读的字符串,c#,sql-server,datetime,C#,Sql Server,Datetime,从sql server获取日期时间并将其转换为友好字符串的最佳方法是: 如果超过1天>1天前。 超过7天>1周前 一年前 3分钟前 56秒前 等等。这样做容易吗?您最好的选择是使用DateTime扩展方法: public static class DateTimeExtensions { public static string ToRelative(this DateTime value) { DateTime now = DateTime.No

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

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


等等。这样做容易吗?

您最好的选择是使用
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...
    }
}

重复的-是否可以将asp.net中的datagrid列绑定到TimeStarted.ToAgo()?应该是,但您可能必须在
ItemDataBound
事件中执行此操作。这是windows还是web?如果您不使用UTC或
DateTimeOffset
,您就是在这里自找麻烦。即使所有值都是在同一时区生成的,您也会对夏令时的更改给出不准确的答案。另外-通过使用
Math.Abs
,您排除了您可能想说“从现在开始”而不是“以前”的未来日期@MattJohnson,这只是一个示例,显然是不完整的。亨特表示同意。很好的例子,只是想确保OP理解上下文对于日期很重要。谢谢
myDateTime.ToRelative();