2017-07-05 72 views
-2

在Web應用程序中,您通常會看到類似「上次登錄:3小時42分鐘前」的內容。這樣做的最好方法是什麼?使用字符串或日期?另外,我將這個時間戳帶回Kendo MVC Grid。該列看起來像這樣。如何獲得ASP.NET 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 
       }; 

任何建議,不勝感激

+0

真的很難被擊敗https://momentjs.com/不知道它是多麼容易劍道電網實現,但強烈建議。易於支持地區時間。 –

+0

你是否必須支持多個時區? –

回答

1

既然是劍道UI相關的,你可以在視圖模型類中添加一個只讀屬性。

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"); 
+0

非常好的答案贏。正是我在找的東西。謝謝! –

0

使用TimeSpan

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

格式化時間跨度值

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。)但是,只有標準格式字符串對區域敏感。

0

我不熟悉的劍道,但jQuery提供了一個名爲TIMEAGO插件這樣的:

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

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

編輯

顯然,你可以使用像這樣的劍道標記你的剃鬚刀控制器:

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

在模型中設置它之後:

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

注意:您剛剛返回事件的日期沒有得到差爲你的代碼顯示。

而且你會使用JavaScript初始化是這樣的:

jQuery(document).ready(function() { 
    jQuery(".timeago").timeago(); 
}); 
相關問題