为什么日期时间字符串在一个 Windows 10 系统上是 0 填充的,而在大多数其他系统上不是?

章鱼抓斗

多台机器上的以下代码将 SQL Server 日期时间字符串从“NOW”设置为同一日期但在午夜。

DateTime deleteDateThreshold = DateTime.Now;
string deleteDateThresholdS = DateTime.Now.ToString();
deleteDateThresholdS = deleteDateThresholdS.Substring(0, 10) + " " + "00:00:00 AM";

想想看,我本可以减去回到午夜,但我认为这是一种更快的方法。

然后字符串被解析为 DateTime;并从中减去一天。一一系统,解析失败,因为 Substring 遇到一个额外的字符,值为 2,因为日期字符串没有填充零(03/04/2020)。我终于能够捕捉到有问题的日期时间;并且它不是 DateTime,因此应该发生异常。

这是解析的代码。

deleteDateThreshold = DateTime.Parse(deleteDateThresholdS, us);
deleteDateThreshold = deleteDateThreshold.AddDays(-1);

在大多数系统上,日期字符串看起来像这样

"03/04/2020 00:00:00 AM"

但是,在抛出异常的系统上,日期不是 0 填充的,字符串如下所示:

"3/4/2020 2 00:00:00"

为什么这个字符串中有一个 2,为什么月和日不是 0 填充的?

凯厄斯·贾德

想想看,我本可以减去回到午夜,但我认为这是一种更快的方法。

我会说<somedate>.Date或者DateTime.Today(谢谢,@ckuri)可能是在某个日期/今天到达(本地)午夜的最简单方法。(也许可以考虑在您的所有系统中使用 UtcNow)

您的问题的真正性质是什么,我现在不确定,但我几乎可以肯定,如果您将日期保留为日期并且不转换字符串和转换字符串来操作它们,则不会发生这种情况;SQL Server 具有日期数据类型,映射到 CLR 数据类型 - 根本不需要在此系统中将日期作为字符串存储、处理、传输或操作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Math.log10在某些系统上可以工作,而在其他系统上却返回undefined?

在Win10上安装WSL(Linux的Windows子系统)上的错误0x80070091

在Windows 10上创建系统映像失败

.gitattributes在大多数Windows操作系统上均不受尊重

Windows 10压缩了一些按钮,标签和其他内容,但大多数都很好

为什么.Net Framework 4.7.2“在此操作系统上不支持”?(Windows 10)

为什么我不能在Windows 10上创建系统还原点?

为什么Alt + Space键盘快捷键无法在Windows 10上打开系统菜单?

为什么Alt + Space键盘快捷键在Windows 10上不再可以打开系统菜单?

“大多数C系统提供逻辑上无限的浮点值”是什么意思?

无法在全新的Windows 10上播放大多数媒体文件

无法在Windows 10上启动大多数程序和服务

Windows 10 以外的其他操作系统上的 SAP NWDS 7.5

PowerShell5 索引 [0] 到字符串的第一个实例,索引 [1] 到第二个实例,依此类推,直到在 6800 行 windows10 批处理文件上完成

修改后的系统保留分区,但在双启动系统(Windows 10和Ubuntu LTS 18.04)上未找到启动设备错误(代码:0xc000021a)

Cintiq Pro 13在Windows 10系统上不显示

Windows 10,端口80上的IIS,系统和压缩内存

整个 UWP 系统无法在 Windows 10 上运行

Windows 10系统还原上的意外错误

在无法启动Windows 10的系统上安装Ubuntu!

如何在Windows 10系统上启用键盘按键声音?

在Windows 10双启动系统上卸载Ubuntu 14.04

在预安装的系统上再次安装Windows 10

Windows 10 Linux子系统上的Xming Visual Studio代码

无法在我的 Windows 10 和 Windows 10 上的 linux 子系统上运行 bash

在Windows 7上更改系统时间格式

Windows 10系统托盘-将其他图标收集在一个盒子中

当我在Windows 10上打开Google Chrome时,它几乎立即使系统崩溃,为什么?

我打破了Windows Linux子系统(Windows 10上Ubuntu上的Bash)。Linux帮助?