我需要比较两个日期格式字符串:
dateString"dd MMM yy"格式
带有
引用日期字符串分别为"M/dd/yyyy hh:mm:ss tt"格式。
为此,我需要将日期字符串="dd MMM yy"转换为"M/dd/yyyy hh:mm:ss tt"。
然而,在尝试这样做时出现了一个错误:
"错误:字符串未被识别为有效的日期时间"。
我使用的C#代码如下。
string dateString = "19-Dec-14";
string AsofDate = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
编辑1:
在实际代码中,dateString在读取以"19-Dec-14"提供的csv文件后获得,这就是为什么它是字符串格式的原因。
请帮忙,我对C#很陌生。谢谢
Habib已经给出了他的评论的答案,我试图将其添加为答案;
来自DateTime.ParseExact(String, String, IFormatProvider
)
将指定的日期和时间的字符串表示形式转换为其使用指定格式和特定于区域性的等效DateTime格式信息字符串表示形式的格式必须匹配指定的格式正好。
在你的情况下,他们显然没有。首先,您需要使用适当的格式(即具有基于英语的文化的dd-MMM-yy
)将string
解析为DateTime
,然后您可以使用特定的格式获得DateTime
的字符串表示。
string s = "19-Dec-14";
DateTime dt;
if(DateTime.TryParseExact(s, "dd-MMM-yy", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
dt.ToString("M/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture).Dump();
// Result will be 12/19/2014 12:00:00 AM
}
还不完全清楚你想做什么,但为了解析第一行的日期,你可以使用这样的东西:
DateTime AsofDate = DateTime.ParseExact(dateString, "dd-MMM-yy", System.Globalization.CultureInfo.InvariantCulture);
请注意以下几点:我已经将AsofDate
的数据类型从string
更改为DateTime
,因为这就是DateTime.ParseExact
返回的内容。此外,我还修改了自定义格式字符串,以匹配您试图解析为日期的字符串的格式("19-Dec-14"
)。