Asp.net MVC 5 添加时间戳到添加内容的时间

本文关键字:添加 时间 时间戳 net MVC Asp | 更新日期: 2023-09-27 17:55:15

假设我的网站上有一个评论部分,它存储在数据库中。当我添加新评论时,我想看看谁添加了它以及他/她在什么日期/时间发布了它。

不知道我会如何继续这样做。有谁能把我推到正确的方向?

我知道我可以做到这一点。 public DateTime Time { get; set; }用户输入自己的日期最终会如何,我需要自动。

这是我尝试过的模型,它不编译,而是生成Error 3 The type name 'Now' does not exist in the type 'System.DateTime'

public class Suggestion {
    public int Id { get; set; } 
    public string Comment { get; set; } 
    public DateTime.Now Time { get; set; } 
}

这是我得到的错误Error 3 The type name 'Now' does not exist in the type 'System.DateTime'

Asp.net MVC 5 添加时间戳到添加内容的时间

如果您希望它每次都自动运行,则应在构造函数中设置WhenCreated。这样,您就不必记住将其设置在任何地方。

public class Suggestion 
{
  public DateTime WhenCreated { get; set; }
  /* other props */
  public Suggestion() 
  {
    WhenCreated = DateTime.Now;
  }
}

从数据库记录解除冻结Suggestion时,WhenCreated将由 EntityFramework 或你正在使用的任何持久性层更新。这发生在调用构造函数之后,因此无论您在其中拥有什么初始值都无关紧要。当应用程序创建新Suggestion时,WhenCreated字段将自动设置为"现在"。

注意:DateTime.Now返回服务器时区的当前日期和时间。您可能需要为用户处理本地时区的转换,如果是这种情况,最好使用 DateTime.UtcNow 来获取 UTC 时间,这将在将来更容易本地化(在夏令时移动期间不会加倍/丢失一个小时)

public class Suggestion {
  public int Id { get; set; } 
  public string Comment { get; set; } 
  public DateTime Time { get; set; } 
}
Suggestion s = new Suggestion();
s.Time = DateTime.Now;

两种可能的选项:

  1. 定义表以在数据库中存储注释时,添加新列以存储创建行时的日期时间。为其指定默认值。例如,在 Sql Server 中,您可以使用 getdate() 作为默认值。此方法的优点是无需编写其他 C# 代码即可将值设置为 WhenCreated 列:

.

CREATE TABLE [dbo].[Coments](
   [Id] [int] NULL,
   [Comment] [nvarchar](50) NULL,
   [WhenCreated] [datetime2](7) NOT NULL DEFAULT getdate()
)
  1. 如果你想在C#中做到这一点,你可以使用DateTime.Now

.

 public class Suggestion {
        public int Id { get; set; } 
        public string Comment { get; set; } 
        public DateTime WhenCreated { get; set; } 
    }
    var n = new Suggestion();
    n.WhenCreated = DateTime.Now;

我是这样解决这个问题

 public class Time
{
    private DateTime _date = DateTime.Now;
    public int ID { get; set; }
    public DateTime DateCreated
    {
        get { return _date; }
        set { _date = value; }
    }
}

你对自己想做什么有正确的想法,只是不知道怎么做。

如果要在对象创建时设置值,那么执行此操作的最佳位置是在对象默认构造函数中。

每次通过调用 new 关键字创建对象时,程序都会调用默认构造函数。

所以,回到你的问题,要完成你想做的事情,你只需要做这样的事情:

public class YourClass() 
{
    public DateTime CreatedAt { get; set; }
    public YourClass()
    {
        CreatedAt = DateTime.Now;    
    }
}

一路快乐!