【问题标题】:Date difference in mvc view with current date / sql servermvc视图中的日期差异与当前日期/ sql server
【发布时间】: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


【解决方案1】:
Create FUNCTION GetDateDiff
(
@a datetime
)
RETURNS varchar(100)
AS
BEGIN
Declare @Return varchar(100) 
Set @Return = '';
if(Convert(int,(DATEDIFF(day, @a, getdate()))) >= 1)
Begin
    Set @Return += Convert(varchar(10),(DATEDIFF(day, @a, getdate()))) + ' Day ';
End
if(Convert(int,(DATEDIFF(HOUR, @a, getdate()))) >= 1)
Begin
    Set @Return += Convert(varchar(10),(DATEDIFF(HOUR, @a, getdate()))) + ' Hour ';
End
if(Convert(int,(DATEDIFF(MINUTE, @a, getdate()))) >= 1)
Begin
    Set @Return += Convert(varchar(10),(DATEDIFF(MINUTE, @a, getdate()))) + ' Minute ';
End


return @Return
END

所以我正在用sql编写这个函数,有什么改进的建议吗? 此外,当日差大于 1 时,字符串应为 'days'(小时和分钟相同)

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多