c#-4.0 - 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 全球化,代码正在运行,并且文化设置为“不变”。
解决方案
我会检查以确保这不是时区/夏令时问题。
它可能会在没有设置正确时区的情况下返回某些内容,从而导致减去几个小时并将您滚动到前一天。
推荐阅读
- react-native - Expo:实时获取音频数据并通过 Socket.IO 发送
- nginx - 使用 docker 将 phpMyAdmin 添加到我的 LEMP 堆栈时出现问题
- database - Oracle 数据库中的查询优化问题 - 仅获取前 1 行
- c# - 如果存在,则增加现有文件名
- html - 反应中的下载按钮
- c++ - 错误:预期一个';',构建时 Intellisense 中的错误?
- reactjs - 显示 React recaptcha
- python - 如何使用另一个变量命名一个变量?
- javascript - 如何将函数的返回值作为文本添加到 DOM 中,并在事件发生后显示在 div 元素中?
- python - x() 和 x[:] 在 MATLAB 中是什么意思,Python 的等价物是什么