c# - Windows 正在从我在一台机器上的日期中删除斜杠

标签 c# .net windows date-formatting

我的程序中有两种日期格式。在一台特定的机器上:

  • date.ToString("M/d/yyyy h:m:s tt") 正在生成类似 11222013 12:0:0 AM 的内容。 (:0:0 是可以接受的;这是一个通常不会被人类读取的文件。)
  • date.ToString("MM/dd/yyyy hh:mm tt") 正在生成类似 11222013 12:00 AM 的内容。

我的代码是用 C# 编写的。拥有它的机器的人具有一定的编程经验,并且能够使用 Delphi 获得相同的行为。为什么格式化日期中缺少正斜杠?或者我应该建议他核弹并铺平有问题的盒子?

最佳答案

custom date and time format string 中, 不带引号的斜杠只是文化特定 DateTimeFormatInfo.DateSeparator 的占位符(可以是“-”和“.”之类的字符串,具体取决于文化)。如果在另一台机器上,有人自定义了 Windows 区域设置并从短日期格式中删除了分隔符,则 DateTimeFormatInfo.DateSeparator 将是一个空字符串,并且您的格式化日期将缺少斜杠。

要强制使用斜杠,请在格式字符串中用引号将斜杠括起来,或将 CultureInfo.InvariantCulture 传递给格式化方法。例如,你可以写

date.ToString("M'/'d'/'yyyy h:m:s tt")

date.ToString("M/d/yyyy h:m:s tt", CultureInfo.InvariantCulture)

CultureInfo.InvariantCulture 如果您希望在您的格式化时间中使用“:”和 AM/PM 而不是像“.”这样的本地化值,那将是更好的选择。和 Mo Mosong/Mo Maitseboeng(南非)。

关于c# - Windows 正在从我在一台机器上的日期中删除斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20153340/

相关文章:

.net - .snk 是做什么用的?

c - 比较常量时在哪里可以使用&和==?有什么不同?

windows - Visual Studio 或 Eclipse - 哪个更适合 Windows 上的 Qt?

c# - Unity Firebase 订阅/取消订阅重新加载应用程序的主题问题

c# - 删除 'Where' 并将条件移动到 LINQ 中的 'First'

c# - 检查重叠日期

c# - IEnumerable 对象是否需要空值检查?

c# - LDAPS 连接出现未知错误 (0x80005000)

.net - 同一进程的两个线程可以产生相同的 GUID 吗?

windows - 使用批量输入查找和替换值列表