【问题标题】:ASP.NET MVC Date Time passed from StartASP.NET MVC 日期时间从开始传递
【发布时间】:2018-02-09 07:51:43
【问题描述】:

我来这里是为了更多地询问如何做某事,而不是检查我的错误。

我有一个价值

public virtual DateTime DateCreated { get; set; }

我在视图中显示如下:

asked @item.DateCreated by @item.Creator.FullName

这给了这个

由系统管理员于 2018 年 2 月 2 日下午 2:28:13 询问

我想像在 StackOverflow 中那样做

5 分钟前由 x 提问

您对此有何建议?我需要一些代码示例,这就是我用 SO 而不是 SE 编写的原因。

【问题讨论】:

  • 根据DateTime.Now 的值计算 - 例如double duration = (DateTime.Now - DateCreated).TotalMinutes; 但是你需要考虑当这是一个很大的数字时会发生什么 - 它会变成 x hours and y minutes ago 还是 x days 之前。然后您需要考虑使用 javascript 计时器在视图中更新它(以与 SO 相同的方式 - 例如,您在此问题中在您的姓名上方看到的“问 x 分钟前”)
  • 大多数人使用 JavaScript,最大的优点是它可以在浏览器中“实时”更新。我们为此使用TimeAgo
  • @thmshd 我是否必须更改模型?因为 .NET 使用不同的时间标准?
  • 不,如果您想使用 JavaScript 解决方案,您不需要更改模型。您只需要将 DateCreated 值转换为 JavaScript 日期值。如果您更喜欢在 C# 中执行此操作,那么您可以使用我的答案,如果您不想要它也不需要更改您的模型。

标签: javascript jquery asp.net-mvc entity-framework


【解决方案1】:

你可以这样做:

@{
    var diff = DateTime.Now.Subtract(DateCreated);
    var result = diff.TotalSeconds;
    var unit = "seconds";
    if (result >= 60) {
        result = diff.TotalMinutes;
        unit = "minutes";

        if (result >= 60) {
            result = diff.TotalHours;
            unit = "hours";
        }
    }
}

asked @result @unit by @item.Creator.FullName

如果您需要支持更多单元,例如 days,则添加更多 if 块,但您明白了。

您可以将此代码放在代码隐藏中,并可能将resultunit 作为item 对象的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多