这是C#代码:
employee.BirthDate.ToString("yyyy-MM-dd");
在我的计算机上使用来自SQL Server数据库的BirthDate =“ 1/1/1981”运行单元测试时,上面的代码将显示为“ 1981-01-01”。但是,在质量检查服务器上运行相同的代码时,结果为“ 1980-12-31”。
我尝试执行以下操作:
employee.BirthDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
employee.Birthdate.ToString("yyyy-MM-dd", new CultureInfo("en-US"));
但是这两行代码都会在质量检查服务器上产生相同的“ 1980-12-31”。
可能是什么原因造成的,什么解决方法?
注意:我的计算机和质量检查服务器上的时钟同步。另外,我在运行代码的QA服务器上的IIS中检查了.NET全球化,并且区域性设置为“不变式”。
答案 0 :(得分:0)
我会检查以确保它不是时区/夏时制问题。
可能会返回未设置正确时区的内容,从而导致减去几个小时并将您带入前一天。
答案 1 :(得分:0)
以下代码可以达到目的:
employee.BirthDate.ToUniversalTime().ToString("yyyy-MM-dd");