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'
如果您希望它每次都自动运行,则应在构造函数中设置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;
两种可能的选项:
- 定义表以在数据库中存储注释时,添加新列以存储创建行时的日期时间。为其指定默认值。例如,在 Sql Server 中,您可以使用 getdate() 作为默认值。此方法的优点是无需编写其他 C# 代码即可将值设置为 WhenCreated 列:
.
CREATE TABLE [dbo].[Coments](
[Id] [int] NULL,
[Comment] [nvarchar](50) NULL,
[WhenCreated] [datetime2](7) NOT NULL DEFAULT getdate()
)
- 如果你想在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;
}
}
一路快乐!