C#ParseExact没有选择格式

时间:2018-04-09 05:07:31

标签: c# datetime ssis

我需要帮助这个简单而愚蠢的事情.. 希望能够将此字符串表示"Oct 9 2017 2:45:67:145PM"转换为日期 我正在使用以下代码:

string strDate = "Oct 9 2017 2:45:67:145PM";
DateTime dtTroubleDate;
dtTroubleDate = DateTime.ParseExact(strDate.ToString(), "MMM d yyyy h:mm:ss:ffftt", CultureInfo.InvariantCulture);
MessageBox.Show("dtTroubleDate String : " + dtTroubleDate.ToString());

这是SSIS包中的C#代码。我正在从文件中读取日期。 需要在数据库中存储为' datetime2'

1 个答案:

答案 0 :(得分:1)

从未在公历的历史中有过67秒的时间...... 这必须是文件本身的拼写错误。您使用的格式没问题,但出于这个原因,我建议您使用TryParseExact代替ParseExact

当使用ParseExact时,你基本上是在说“我知道日期时间值的字符串表示将始终采用这种特定格式,我将始终能够解析它。

然而,情况很少 - 因为大多数时候日期时间值的字符串表示是由易犯错误的人写的,偶尔会有拼写错误 - 而这正是TryParse方法的全部内容。

string strDate = "Oct 9 2017 2:45:67:145PM";
DateTime dtTroubleDate;
if(DateTime.TryParseExact(
    strDate, 
    "MMM d yyyy h:mm:ss:ffftt", 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None, 
    out dtTroubleDate))           
{
    // Datetime is valid
}