【发布时间】:2017-01-12 11:52:36
【问题描述】:
我从模型中获取日期并显示在视图中
@Html.DisplayFor(modelItem => item.UpdateDate)
UpdateDate 为日期时间。(格式 2017-01-12 17:16:32.013)
我想做的是,将它与当前日期进行比较并显示时间差异。
如果当前日期时间和 UpdatedDate 之间的差异较小 超过 60 分钟,那么它应该说“'X' Minues ago”(其中 'X' 是 分钟差)
如果当前日期时间和 UpdatedDate 之间的差异更大 超过 60 分钟且少于 24 小时,则应显示“'Y' 小时 'X' 几分钟前”(其中 'X' 以分钟为单位,'Y' 以小时为单位)
如果当前日期时间和 UpdatedDate 之间的差异超过 24 小时,那么它应该说“'Z' 天 'Y' 小时 'X' 分钟前”(其中 'X' 以分钟为单位而 'Y ' 是小时,'Z' 是天)
我想在视图中这样做。非常感谢您的帮助。
谢谢
这是我的做法,
TimeSpan diff = DateTime.Now - DateTime1;
string formatted = string.Format(
CultureInfo.CurrentCulture,
"{0} days, {1} hours, {2} minutes, {3} seconds",
diff.Days,
diff.Hours,
diff.Minutes,
diff.Seconds);
This works but it will prroduce o/p like
0 days 2 hours 28min (o/p needs to be 2 hours 28min)
or
0 days 0 hours 33 min ( o/p needs to be 33 min)
如何在不使用 if else 检查“0”并获得预期输出的情况下增强它
我们可以在 sql server 中编写一个用户定义的函数以获得所需的格式吗?
【问题讨论】:
-
Humanizer 可能是您的解决方案。这是一个开箱即用的 NuGet 包。
-
好吧,我会检查一下。我不能简单地用剃须刀做到这一点吗?谢谢。
-
您可以创建一个公共字符串 UpdateDateText 属性,并在其中自己检查日期差异并生成一个带有时差的字符串。没有内置的东西可以做到这一点;您必须自己设置。
-
视图放错地方了!您最好将该逻辑放入您的控制器并计算那里的时间差。
标签: c# sql-server asp.net-mvc razor