前一天的 C# 日期格式化结果

C# date formatting results in previous day

这是 C# 代码:

employee.BirthDate.ToString("yyyy-MM-dd");

虽然 运行 在我的计算机上使用来自 SQL 服务器数据库的 BirthDate =“1/1/1981”进行单元测试,但上述代码导致“1981-01-01 ”。但是,虽然 运行 QA 服务器上的代码相同,但结果为“1980-12-31”。

我尝试执行以下操作:

employee.BirthDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
employee.Birthdate.ToString("yyyy-MM-dd", new CultureInfo("en-US"));

但是这两行代码在 QA 服务器上产生了相同的“1980-12-31”。

可能是什么原因造成的,有什么解决办法?

注意:我电脑上的时钟和 QA 服务器上的时钟是同步的。另外,我检查了QA服务器上IIS中的.NET全球化,代码是运行,文化设置为"Invariant"。

我会检查以确保这不是 timezone/daylight 储蓄问题。

它可能会在没有正确设置时区的情况下返回某些内容,导致减去几个小时并使您回到前一天。

下面的代码起到了作用:

employee.BirthDate.ToUniversalTime().ToString("yyyy-MM-dd");