所以我正在编写一个用户日志系统,不幸的是,当我试图将日期保存在用户中时,它不起作用,但当我手动调用它时,它非常有效。
User.cs
class User
{
public User()
{
creationDate = DateTime.Now;
}
public DateTime CreationDate{get;set;}
private DateTime creationDate = new DateTime();
}
Program.cs
User user = new User();
Console.Write(user.CreationDate); //Output: 1/1/0001 12:00:00 AM
Console.Write(DateTime.Now); // Output: 7/6/2021 10:55:26 AM (e.g. the correct time)
我做错什么了吗?
您的属性和字段完全无关。没有使用字段,但这是您在构造函数中设置的内容。
最简单的选择是完全摆脱该字段,并在任何地方使用该属性:
class User
{
public User()
{
CreationDate = DateTime.Now;
}
public DateTime CreationDate { get; set; }
}
(附带说明的是,DateTime.Now
对于类似时间戳的值通常不如DateTime.UtcNow
好,除非您真的只对系统本地时区感兴趣,并且您不介意值在夏令时变化前后倒退或跳过。(