我需要从日期算起经过的时间,例如:
我有这条线
Mon, 12 Sep 2016 10:20:00 +0100
如果现在的日期时间是:
12/09/2016 10:40:02
我需要得到最终结果:
20 mins ago
同一问题的另一个例子可以更好地解释它: 如果我有这个日期:
Sun, 11 Sep 2016 09:18:13 +0100
最终结果应为:
1 day ago
但是如果时间没有变成24小时,那么它会把那个时间以来的小时数放在一起,例如:
Sun, 11 Sep 2016 11:18:13 +0100
结果将是:
23 hours ago
如果过去的日期是一个月或几年,则相同, 来自示例: 这个日期:
Sun, 11 Ago 2016 11:18:13 +0100
结果:
1 month ago
和
Sun, 11 Ago 2015 11:18:13 +0100
结果:
1 year ago
我怎么能得到这个?谢谢你的帮助
答案 0 :(得分:3)
如果两者的类型相同,您可以直接从结束日期时间中减去开始日期时间。
var difference = endDateTime - startDateTime;
一旦你得到了改变,那么只需格式化输出字符串。
参考this
答案 1 :(得分:3)
您可以使用Humanizer:
// For DateTime
DateTime.UtcNow.AddHours(-30).Humanize() // returns "yesterday"
DateTime.UtcNow.AddHours(-2).Humanize() // returns "2 hours ago"
// For TimeSpan
TimeSpan.FromDays(1).Humanize(precision:2) // "1 day"
TimeSpan.FromDays(16).Humanize(2) // "2 weeks, 2 days"
您可以在github
找到更多样本答案 2 :(得分:1)
您可以使用DateDiff功能。