DateTime在单独的.cs文件中执行时返回最小值



所以我正在编写一个用户日志系统,不幸的是,当我试图将日期保存在用户中时,它不起作用,但当我手动调用它时,它非常有效。

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好,除非您真的只对系统本地时区感兴趣,并且您不介意值在夏令时变化前后倒退或跳过。(

最新更新