如何将日期字符串从"dd-MMM-yy"转换为"M/dd/yyyy hh:mm:ss tt"?



我需要比较两个日期格式字符串:

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")。

相关内容

  • 没有找到相关文章

最新更新