C#不选择格式

C#不选择格式,c#,datetime,ssis,C#,Datetime,Ssis,我需要帮助做这件简单而愚蠢的事。。 希望能够将此字符串表示形式转换为日期。“2017年10月9日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.Invariant

我需要帮助做这件简单而愚蠢的事。。 希望能够将此字符串表示形式转换为日期。
“2017年10月9日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”

在公历的历史上,从未有过67秒的时间。。。 这一定是文件本身的输入错误。您使用的格式还可以,但我建议使用
TryParseExact
而不是
ParseExact
,原因正是如此

当使用
ParseExact
时,您基本上是在说“我知道datetime值的字符串表示形式将始终使用此特定格式,并且我将始终能够解析它

然而,这种情况很少发生-因为datetime值的大多数时间字符串表示都是由容易出错的人编写的,偶尔会出现打字错误-这正是
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
}

你在<代码>上赢得了我的选票,在公历的历史上,从来没有一个时间是67秒。直到今天:)投票支持我that@TheGeneral谢谢!虽然我认为我的回答的其余部分是更重要的部分,但我非常感谢你对我幽默的欣赏:-)谢谢,佐哈尔:)很好。事实上,我在发帖后不久就收到了d这个问题。我实际上删除了这个问题。谢谢你。@rRana很高兴知道问题已经解决。请接受答案以便其他人知道问题已经解决,或者删除这个问题。谢谢!