【问题标题】:How do get a timestamp on an ASP.NET MVC App [closed]如何在 ASP.NET MVC 应用程序上获取时间戳 [关闭]
【发布时间】:2017-07-05 22:40:33
【问题描述】:

在网络应用程序上,您通常会看到“上次登录时间:3 小时 42 分钟前”之类的内容。这样做的最佳方法是什么。使用字符串还是日期?另外,我正在将该时间戳带回 Kendo MVC 网格中。该列看起来是这样的。

columns.Bound(c => c.LastStatusDateDiff).Title("Updated");

我的 Linq 代码是这样的

select new ATSReDto
                {
                    CreatedDate = atsr.CreatedDt,
                    Desciption = atsr.Description,
                    LastStatusDateDiff = laststatus.CreatedDt - DateTime.Now    
// get date difference between now "DateTime.Now" and 
// date/time pulled from SQL Server to display in Grid
                };

非常感谢任何建议

【问题讨论】:

  • 真的很难击败momentjs.com 不确定使用 kendo-grid 实现有多容易,但强烈推荐。也易于支持区域时间。
  • 你必须支持多个时区吗?

标签: asp.net-mvc linq kendo-grid


【解决方案1】:

由于它与 Kendo UI 相关,您可以在 ViewModel 类中添加只读属性。

public class ViewModel
{
    public DateTime LastStatus { get; set; }

    public string LastStatusText
    {
        get
        {
            var span = DateTime.Now - LastStatus;
            return string.Format("Last Logged in : {0} days  {1} hours {2} minutes ago",
                span.Days, span.Hours, span.Minutes);
        }
    }
}

用法

columns.Bound(c => c.LastStatusText).Title("Updated");

【讨论】:

  • 很好的答案 赢了。正是我想要的。谢谢!
【解决方案2】:

使用TimeSpan

TimeSpan diff = Math.Abs(dateTime1 - dateTime2);

格式化 TimeSpan 值

TimeSpan 值可以表示为 [-]d.hh:mm:ss.ff,其中可选的减号表示负时间间隔,d 分量是天,hh 是按 24 小时测量的小时时钟,mm 是分钟,ss 是秒,ff 是秒的分数。也就是说,时间间隔由正数或负数天数组成,没有时间,或天数有时间,或只有时间。

TimeSpan.ToString(String) 重载允许您指定一个格式字符串,用于定义时间间隔的字符串表示形式。 TimeSpan.ToString(String, IFormatProvider) 重载允许您指定格式字符串和文化,其格式约定用于创建时间间隔的字符串表示形式。 TimeSpan 支持标准和自定义格式字符串。 (有关详细信息,请参阅 Standard TimeSpan Format StringsCustom TimeSpan Format Strings。)但是,只有标准格式字符串是文化敏感的。

【讨论】:

    【解决方案3】:

    我不熟悉剑道,但是 jQuery 提供了一个名为 TimeAgo 的插件:

    jQuery(document).ready(function() {
        jQuery("time.timeago").timeago();
    });
    

    文档:http://timeago.yarp.com/ 插件:https://plugins.jquery.com/timeago/

    编辑

    显然,您可以像这样使用 Kendo 标记剃须刀控制器:

    <abbr class="timeago" title="@Model.LastActivityDateString">@Model.LastActivityDateString</abbr>
    

    在你的模型中设置后:

    LastActivityDateString=DateTime.UtcNow.ToString("o");
    

    注意:您只是返回事件的日期,而不是代码显示的差异。

    你会像这样使用 Javascript 进行初始化:

     jQuery(document).ready(function() {
        jQuery(".timeago").timeago();
    });
    

    【讨论】:

      猜你喜欢
      • 2020-01-14
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多