Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我无法将Datetime转换为所需格式_C#_Datetime - Fatal编程技术网

C# 为什么我无法将Datetime转换为所需格式

C# 为什么我无法将Datetime转换为所需格式,c#,datetime,C#,Datetime,这是要求 我在类文件中将我的字段声明为Datetime 我拿了一个字符串,我想把它转换成日期时间,因为我的类中的文件是日期时间 我总是把它当作 String date="9999-12-31 00:00:00" 我想将其转换为日期时间,以便输出格式与给定字符串相同 DateTime dt = DateTime.ParseExact(strDate, "yyyy-MM-ddTHH:mm:ss", DateTimeFormatInfo.InvariantInfo, DateTimeStyl

这是要求

我在类文件中将我的字段声明为Datetime

我拿了一个字符串,我想把它转换成日期时间,因为我的类中的文件是日期时间

我总是把它当作

    String date="9999-12-31 00:00:00"
我想将其转换为日期时间,以便输出格式与给定字符串相同

DateTime dt = DateTime.ParseExact(strDate, "yyyy-MM-ddTHH:mm:ss", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);

这将把
9999-12-31 21:34 PM
转换为
9999-12-31
(如果使用
dt.ToString(“yyy-MM-dd”)

请注意,此DateTime将包含小时/分钟等。如果要从DateTime中删除小时/分钟,请使用以下内容:

 dt = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, dt.Kind);

如果将格式指定为,则输入字符串必须正好具有此格式才能转换为日期时间。您可以改为使用。

非常简单,您试图用格式字符串“yyyy-MM-ddTHH:MM:ss”解析“9999-12-31”-它不符合,因为它没有时间

编辑:好的,现在您已经将输入更改为“9999-12-31 21:34 PM”,它仍然不是适当的格式-没有时间,没有秒,还有一个am/PM指示器。为什么不使用与您的输入匹配的格式字符串


但是,如果输入是“9999-12-31”,那么您期望的输出是什么?

您的问题非常不清楚“9999-12-31”是您预期的输入还是输出。请花一点时间来澄清你的问题-最好是用一个完整的示例程序来演示这个问题。这是我的输入,因为我很困惑。。。“9999-12-31”不是“yyyy-MM-ddTHH:MM:ss”…是的,刚才给出的是9999-12-31您将24小时格式与AM/PM混合,你知道吗?在返回dt时还有一件事,我仍然能够在通过时看到12/31/9999:34:00,而不是我所要求的,但是如果我在快速观察中查看,我可以看到我所要求的,为什么会发生这种情况在返回dt时,我仍然能够在通过时看到12/31/9999:34:00,而不是我所需要的必需的可以,但如果我看一下quick watch,我可以看到我需要什么,为什么会发生这种情况,因为DateTime仍然包含小时/分钟。您只是返回一个显示日期时间的字符串,格式为“yyyy-MM-dd”。如果要返回去掉小时/分钟的DateTime,则必须创建一个小时/分钟等设置为0的新DateTime。我已经更新了我的答案,但我仍然可以看到时间dt@Dorababu:A
DateTime
将始终有一个概念时间,即使是午夜。毕竟这是一个日期时间。@Dorababu:您刚才在另一条评论中说,您希望输出的“9999-12-31 00:00:00”不是yyyy-MM-dd格式。我放弃了——要么你不知道你想要什么,要么你懒得清楚地表达自己。我认为继续帮助你没有意义。Jon我是以字符串的形式给出的,但我所在层中的字段是Datetime格式,所以我需要使用Datetime格式,以便输出应该是“9999-12-31 00:00:00”@Dorababu:那么你为什么要在没有时间的情况下格式化它呢?我将编辑我的答案。@Dorababu:等一下-您再次更改了问题,因此假定您的输入是“9999-12-31 00:00:00”-但这也是您希望输出的内容。到底发生了什么事?你真正的投入是什么?你真正想从中得到什么?这就像从石头上取血一样。@Dorababu:你的问题还不清楚。您是否希望
DateTime
本身具有格式?没有。只是日期和时间;它不知道您要使用什么格式-您必须在调用
ToString
时提供该格式。我强烈建议您创建一个简短但完整的程序来演示您要做的事情。我知道datetime本身没有格式,但我想将日期9999-12-31 00:00:00传递给我的类文件中的值oEmployee.EndDate
DateTime.ParseExact(
    strDate, 
    "yyyy-MM-dd hh:mm tt", 
    DateTimeFormatInfo.InvariantInfo, 
    DateTimeStyles.None);
DateTime.ParseExact(
    strDate, 
    "yyyy-MM-dd hh:mm tt", 
    DateTimeFormatInfo.InvariantInfo, 
    DateTimeStyles.None);
DateTime dt = DateTime.Parse(strDate, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);