C# 在C中将字符串转换为DateTime#

C# 在C中将字符串转换为DateTime#,c#,datetime,C#,Datetime,我正在尝试将一个字符串转换为DateTime几个小时, 绳子看起来像这样 “20140519-140324”我知道它是UTC的 我已经试过了 DateTime ourDateTime; bool success = DateTime.TryParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out o

我正在尝试将一个字符串转换为DateTime几个小时, 绳子看起来像这样

“20140519-140324”
我知道它是UTC的

我已经试过了

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
StartTime.Text = ourDateTime.ToString("g");
还有这个

DateTime ourDateTime= DateTime.ParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
StartTime.Text = ourDateTime.ToString("g");
但这些都不管用。我做得不好的地方是什么?

来自

将日期和时间的指定字符串表示形式转换为其 日期时间等价物字符串表示形式的格式必须为 精确匹配指定格式。

在你的例子中,它们不是。改用与字符串完全匹配的
yyyyMMdd HHmmss
自定义格式

这里有一个例子

这里有一个

由于同样的原因,您的
DateTime.ParseExact
示例也无法工作

了解更多信息

来自

将日期和时间的指定字符串表示形式转换为其 日期时间等价物字符串表示形式的格式必须为 精确匹配指定格式。

在你的例子中,它们不是。改用与字符串完全匹配的
yyyyMMdd HHmmss
自定义格式

这里有一个例子

这里有一个

由于同样的原因,您的
DateTime.ParseExact
示例也无法工作

了解更多信息


您在TryParseExact方法中使用了错误的格式。 format参数应该是输入字符串格式的指示符。 因此,您需要执行以下操作:

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyyMMdd-HHmmss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
if(success) {
    StartTime.Text = ourDateTime.ToString("g");
}

您在TryParseExact方法中使用了错误的格式。 format参数应该是输入字符串格式的指示符。 因此,您需要执行以下操作:

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyyMMdd-HHmmss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
if(success) {
    StartTime.Text = ourDateTime.ToString("g");
}

如果您确定日期始终采用yyyyMMdd格式,那么请尝试拆分字符串,然后进行处理。如果使用yyyyMMdd HHmmss进行字符串处理,会怎么样?@RamyMohamed:当
DateTime.ParseExact
接受格式字符串时,为什么要拆分字符串?@JonSkeet谢谢通知我在这里找到了您的建议,因为我几乎没有遇到需要接收这样一种日期格式的情况,所以我的脑子里一片空白。@Rammohamed:但OP显然需要,而且已经知道了
ParseExact
。将日期/时间字符串拆分为位并手动解析每个部分几乎从来都不是正确的解决方案。如果您确定日期始终采用YYMMDD格式,那么请尝试拆分字符串,然后处理它。如果使用yyyyMMdd HHmmss进行拆分,会怎么样?@ramymhamed:为什么拆分字符串,当
DateTime.ParseExact
接受格式字符串时?@JonSkeet感谢您的通知,我在这里找到了您的建议,但由于我几乎没有遇到需要接收这种日期格式的情况,所以我忘记了。@RamyMohamed:但OP显然接受了-并且已经知道
ParseExact
。将日期/时间字符串拆分为位并手动解析每个部分几乎从来都不是正确的解决方案。非常感谢大家,很多人都正确地回答了这个问题,我希望我可以将所有的注释标记为答案,我有点认为YY-MM-dd是绝对可以这样键入的。无论如何,干杯并感谢大家。非常感谢大家,很多人回答正确,我希望我能把所有的评论都标记为答案,我有点认为YY-MM-dd是绝对可以这样打字的。无论如何,干杯,谢谢大家。