日期时间到字符串:不同的行为取决于转换后的日期时间
Datetime to string: differents behavior depending on the converted datetime
我使用此 C# 代码将日期时间转换为字符串:
MyDatetime.ToString("dd/MM/yyyy HH:mm")
它有效,但不是每次都有效。我是什么意思?
例如,如果输入的日期时间是 2016-10-19 17:27:41.727
,我会得到预期的字符串 19/10/2016 17:27
。如果日期时间中的日期(and/or 月份)只有一位数字,我会得到一些奇怪的东西。
如果输入是2016-01-07 14:58:13.560
,我得到1/7/2016
,如果是2016-10-26 17:14:16.000
,我得到10/6/2016
。
你知道为什么吗?我怎样才能始终只用一位数字设置几天和几个月的前导零?此外,为什么我在示例中没有看到日期中的时间部分?
更新
。
来自 SQL 服务器数据库(这是 SQL Server Management Studio)的一些日期时间字段。
当您将日期输入为 "XXXX-XX-XX" 时,它假定您使用的格式是 "YYYY-MM-DD".
只要看看你的输入输出,你就可以看到模式。
很多编程人员(和我一起工作)都使用这种格式,因为它是自动过滤的,没有任何标点符号(20170102 总是在 20161231 之后,等等)。
很可能你的 DateTime 已经有无效值(日期和月份混合)
new DateTime(2016, 01, 07,14,58,13,56).ToString("dd/MM/yyyy HH:mm")
returns 07-01-2016 14:58
.
看看你是如何从数据库中读取这个 DateTime 值的。我相信问题就在那里。 (例如 SqlDataReader.GetDateTime)
DateTime 方法与计算机语言结合使用。如果您的计算机(或服务器)是英文的(反之亦然)并且您传递美国非标准日期格式,您将遇到这样的问题。
如果您使用的是 Web 应用程序,请在 web.config
中配置正确的语言
我使用此 C# 代码将日期时间转换为字符串:
MyDatetime.ToString("dd/MM/yyyy HH:mm")
它有效,但不是每次都有效。我是什么意思?
例如,如果输入的日期时间是 2016-10-19 17:27:41.727
,我会得到预期的字符串 19/10/2016 17:27
。如果日期时间中的日期(and/or 月份)只有一位数字,我会得到一些奇怪的东西。
如果输入是2016-01-07 14:58:13.560
,我得到1/7/2016
,如果是2016-10-26 17:14:16.000
,我得到10/6/2016
。
你知道为什么吗?我怎样才能始终只用一位数字设置几天和几个月的前导零?此外,为什么我在示例中没有看到日期中的时间部分?
更新
来自 SQL 服务器数据库(这是 SQL Server Management Studio)的一些日期时间字段。
当您将日期输入为 "XXXX-XX-XX" 时,它假定您使用的格式是 "YYYY-MM-DD".
只要看看你的输入输出,你就可以看到模式。 很多编程人员(和我一起工作)都使用这种格式,因为它是自动过滤的,没有任何标点符号(20170102 总是在 20161231 之后,等等)。
很可能你的 DateTime 已经有无效值(日期和月份混合)
new DateTime(2016, 01, 07,14,58,13,56).ToString("dd/MM/yyyy HH:mm")
returns 07-01-2016 14:58
.
看看你是如何从数据库中读取这个 DateTime 值的。我相信问题就在那里。 (例如 SqlDataReader.GetDateTime)
DateTime 方法与计算机语言结合使用。如果您的计算机(或服务器)是英文的(反之亦然)并且您传递美国非标准日期格式,您将遇到这样的问题。 如果您使用的是 Web 应用程序,请在 web.config
中配置正确的语言