C# 将时间转换为易于阅读的字符串
从sql server获取日期时间并将其转换为友好字符串的最佳方法是: 如果超过1天>1天前。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
超过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();