首页 > 解决方案 > DateTime.Now 在同一台机器上给出不同的格式

问题描述

我有一个 Windows 服务应用程序,我在其中使用 DateTime.Now.ToString() 获取当前日期和时间,它返回“ 04-05-2018 05:50:12 ”。

但我在示例控制台应用程序中尝试了相同的操作,但它以不同的格式返回日期,如“ 5/4/2018 5:51:32 AM

这两台机器都在同一台机器上执行。有人可以告诉我为什么这些应用程序中存在日期格式差异吗?

标签: c#

解决方案



DateTime.ToString() 根据当前文化格式化 DateTime 。如文档中所述

使用当前区域性的格式约定将当前 DateTime 对象的值转换为其等效的字符串表示形式。(覆盖 ValueType.ToString()。)

如果你想要相同的字符串,你应该使用DateTime.ToString(string)重载并提供你想要的确切格式。

ToString(String) 方法以使用当前区域性格式约定的特定格式返回日期和时间值的字符串表示形式;有关详细信息,请参阅 CultureInfo.CurrentCulture。

format 参数应包含单个格式说明符字符(请参阅标准日期和时间格式字符串)或定义返回字符串格式的自定义格式模式(请参阅自定义日期和时间格式字符串)。如果 format 为 null 或空字符串,则使用通用格式说明符“G”。

此方法的一些用途包括:

获取以当前区域性的短日期和时间格式显示日期和时间的字符串。为此,您使用“G”格式说明符。

获取仅包含月份和年份的字符串。为此,您使用“MM/yyyy”格式字符串。格式字符串使用当前区域性的日期分隔符。

获取包含特定格式的日期和时间的字符串。例如“MM/dd/yyyyHH:mm”格式字符串以“19//03//2013 18:06”等固定格式显示日期和时间字符串。格式字符串使用“/”作为固定格式日期分隔符,无论特定于文化的设置如何。

以可用于序列化日期字符串的压缩格式获取日期。例如,“yyyyMMdd”格式字符串显示四位数的年份,后跟两位数的月份和两位数的日期,没有日期分隔符。


推荐阅读