C# 显示在asp.net mvc中发布后的时间

C# 显示在asp.net mvc中发布后的时间,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我正在开发一个评论系统,我很想显示帖子发表以来的时间,而不是帖子发表的实际时间。有没有一个简单的方法可以做到这一点 目前我拉的日期添加 comment.DateAdded = DateTime.Now; 有几件事: 不要在web应用程序中使用DateTime.Now。服务器的时区应该是无关的。因为您存储的是发布时间,所以应该使用DateTime.UtcNow comment.DateAdded = DateTime.UtcNow; 阅读: 然后,您可以从当前时间中减去发布的时间 TimeS

我正在开发一个评论系统,我很想显示帖子发表以来的时间,而不是帖子发表的实际时间。有没有一个简单的方法可以做到这一点

目前我拉的日期添加

comment.DateAdded = DateTime.Now;
有几件事:

  • 不要在web应用程序中使用
    DateTime.Now
    。服务器的时区应该是无关的。因为您存储的是发布时间,所以应该使用
    DateTime.UtcNow

    comment.DateAdded = DateTime.UtcNow;
    
    阅读:

  • 然后,您可以从当前时间中减去发布的时间

    TimeSpan elapsed = DateTime.UtcNow - comment.DateAdded;
    
  • 一旦有了
    TimeSpan
    对象,就可以使用各种方法和属性中的任何一种

    // to get the total hours elapsed
    double hours = elapsed.TotalHours;
    
    // to get the total minutes elapsed
    double minutes = elapsed.TotalMinutes;
    
    // to get a string output of the elapsed time in the default format
    string s = elapsed.ToString();
    
    小心不要将
    Minutes
    TotalMinutes
    属性弄错。90分钟的运行时间将有
    TotalMinutes==90.0
    ,但
    Hours==1
    minutes==30


使用此帮助扩展

public static class TimeHelper{
public static string TimeSpanString(this DateTime date) {
            var Now = DateTime.Now-date; //better to use DateTime.UtcNow
            if(Now.Days>0){
                return Now.Days+" Days "+Now.Hours+" Hours "+Now.Minutes+" Minutes";
            }
            if (Now.Hours > 0)
            {
                return Now.Hours + " Hours " + Now.Minutes + " Minutes";
            }
            return  Now.Minutes + " Minutes";

        }
   }
例如如何使用它

comment.DateAdded.TimeSpanString()