首页 > 解决方案 > C# 日期格式化结果在前一天

问题描述

这是 C# 代码:

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

在我的计算机上运行来自 SQL Server 数据库的 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 全球化,代码正在运行,并且文化设置为“不变”。

标签: c#-4.0datetime-format

解决方案


我会检查以确保这不是时区/夏令时问题。

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


推荐阅读