Asp.net mvc 如何在ASP.NET MVC应用程序上获取时间戳

Asp.net mvc 如何在ASP.NET MVC应用程序上获取时间戳,asp.net-mvc,linq,kendo-grid,Asp.net Mvc,Linq,Kendo Grid,在web应用程序上,您通常会看到类似“上次登录:3小时42分钟前”的内容。做这件事最好的方法是什么。?使用字符串还是日期?另外,我将把时间戳带回剑道MVC网格。这个专栏看起来是这样的 columns.Bound(c => c.LastStatusDateDiff).Title("Updated"); 我的Linq代码看起来是这样的 select new ATSReDto { CreatedDate = atsr.Cr

在web应用程序上,您通常会看到类似“上次登录:3小时42分钟前”的内容。做这件事最好的方法是什么。?使用字符串还是日期?另外,我将把时间戳带回剑道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
                };
非常感谢您的任何建议

TimeSpan diff=Math.Abs(dateTime1-dateTime2)

设置TimeSpan值的格式

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

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


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

jQuery(document).ready(function() {
    jQuery("time.timeago").timeago();
});
文档:插件:

编辑

显然,您可以使用剑道标记razor控制器,如下所示:

<abbr class="timeago" title="@Model.LastActivityDateString">@Model.LastActivityDateString</abbr>
 jQuery(document).ready(function() {
    jQuery(".timeago").timeago();
});
注意:您只是返回事件的日期,没有得到代码显示的差异

您的脚本将使用如下Javascript进行初始化:

<abbr class="timeago" title="@Model.LastActivityDateString">@Model.LastActivityDateString</abbr>
 jQuery(document).ready(function() {
    jQuery(".timeago").timeago();
});

由于它与剑道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");

真的很难打败,不确定用剑道网格实现有多容易,但强烈推荐。很容易支持区域时间。你必须支持多个时区吗?非常好的答案。这正是我想要的。谢谢