我们说我的网站上有一个评论部分存储在数据库中。当我添加新评论时,我想看看谁添加了它以及他/她发布的日期/时间。
我不确定如何继续这样做。谁能把我推向正确的方向?
我知道我能做到这一点。 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'
答案 0 :(得分:6)
如果您希望它每次都自动运行,您应该在构造函数中设置WhenCreated
。这样你就不必记得把它放在任何地方。
public class Suggestion
{
public DateTime WhenCreated { get; set; }
/* other props */
public Suggestion()
{
WhenCreated = DateTime.Now;
}
}
从数据库记录中重新水化Suggestion
时,EntityFramework或您正在使用的任何持久层都会更新WhenCreated
。这是在调用构造函数之后发生的,所以无论你在那里有什么初始值都不重要。当您的应用程序创建新的Suggestion
时,WhenCreated
字段将自动设置为“现在”。
注意:DateTime.Now
会返回服务器时区的当前日期和时间。您可能需要为您的用户处理本地时区的翻译,如果是这样的话,最好使用DateTime.UtcNow
来获取UTC时间,以便将来更容易本地化(赢得& #39; t在DaylightSaving移动期间加倍/减少一小时)
答案 1 :(得分:1)
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;
答案 2 :(得分:0)
两种可能的选择:
CREATE TABLE [dbo].[Coments](
[Id] [int] NULL,
[Comment] [nvarchar](50) NULL,
[WhenCreated] [datetime2](7) NOT NULL DEFAULT getdate()
)
。
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;
答案 3 :(得分:0)
我像这样解决了这个问题
public class Time
{
private DateTime _date = DateTime.Now;
public int ID { get; set; }
public DateTime DateCreated
{
get { return _date; }
set { _date = value; }
}
}
答案 4 :(得分:0)
你对自己想做的事情有正确的认识,你只是不知道如何去做。
如果你想在对象创建时设置一个值,那么完美的地方就是在对象的默认构造函数中。
每次通过调用new关键字创建对象时,程序都会调用默认构造函数。
所以,回到你的问题,要完成你想做的事,你只需要做这样的事情:
public class YourClass()
{
public DateTime CreatedAt { get; set; }
public YourClass()
{
CreatedAt = DateTime.Now;
}
}
快乐的小道!