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

How to convert a date string from "dd-MMM-yy" to "M/dd/yyyy hh:mm:ss tt"?

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

dateString "dd-MMM-yy" 格式

referenceDateString 分别采用 "M/dd/yyyy hh:mm:ss tt" 格式。

为此,我需要将 dateString = "dd-MMM-yy" 转换为 "M/dd/yyyy hh:mm:ss tt"。

但是,尝试这样做时出现错误:

"Error: string was not recognized as a valid datetime".

下面给出了我使用的 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# 的新手。谢谢

尚不完全清楚您要做什么,但为了解析第一行中的日期,您可以使用如下内容:

DateTime AsofDate = DateTime.ParseExact(dateString, "dd-MMM-yy", System.Globalization.CultureInfo.InvariantCulture);

请注意这里的几件事:我已将 AsofDate 的数据类型从 string 更改为 DateTime,因为这就是 DateTime.ParseExact returns。此外,我修改了自定义格式字符串以匹配您尝试解析为日期的字符串的格式 ("19-Dec-14")。

Habib 已经在他的评论中给出了答案,我尝试将其添加为答案;

来自DateTime.ParseExact(String, String, IFormatProvider)

Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. The format of the string representation must match the specified format exactly.

在你的情况下,显然他们没有。首先,您需要使用 正确的 格式(即具有英语文化的 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
}