字符串的日期时间:不同的行为取决于转换的日期时间

时间:2017-03-28 13:32:32

标签: c# datetime type-conversion tostring date-format

我使用此C#代码将日期时间转换为字符串:

MyDatetime.ToString("dd/MM/yyyy HH:mm")

它有效,但不是每次都有效。我是什么意思?

如果输入日期时间是2016-10-19 17:27:41.727,我会按预期获得字符串19/10/2016 17:27。如果日期时间(和/或月份)中的日期只有一位数字,我会感到很奇怪。

如果输入为2016-01-07 14:58:13.560,则为1/7/2016,如果为2016-10-26 17:14:16.000,则为10/6/2016

你知道为什么吗?如何只用一位数来设置天数和月份的前导零点?而且,为什么我在作为例子写的日期中没有看到时间部分?

更新

This is my input

SQL Server数据库中的某些日期时间字段(这是SQL Server Management Studio)。

3 个答案:

答案 0 :(得分:0)

当您输入日期为" XXXX-XX-XX"它假定您使用格式" YYYY-MM-DD"。

只需查看输入输出即可看到模式。 编程中的很多人(我合作)使用这种格式,因为它是自动过滤而没有任何标点符号(20170102将始终在20161231之后,等等)。

答案 1 :(得分:0)

很可能你的DateTime已经有无效值(日期和月份混合)

new DateTime(2016, 01,  07,14,58,13,56).ToString("dd/MM/yyyy HH:mm")

返回07-01-2016 14:58

看看你如何从数据库中读取这个DateTime值。我相信问题就在那里。 (例如SqlDataReader.GetDateTime

答案 2 :(得分:0)

DateTime方法与计算机语言一起使用。如果您的计算机(或服务器)是英文(反之亦然)并且您通过美国非标准日期格式,则会出现这样的问题。 如果您使用的是Web应用程序,请在web.config中配置正确的语言