2012-11-02 221 views
-1

任何人都可以在格式化以下日期字符串格式的最佳方法建议...C#日期/时间格式

星期六,9月22日

的东西,我可以在SQL存储服务器作为一个日期/时间......使用格式

YYYY/MM/DD

我可以在代码中做到这一点,但我阅读数百XML的提取不知道如何是st来解决这个问题。

+1

你怎么知道它是'星期六,九月22'哪一年?假设今年是当前(2012年)? –

+0

是的,看到我对@ davehale23回答的评论。如果DOW与当年不符,您将收到错误信息。 – McArthey

+0

SQL Server支持我将使用的'DateTime'结构。 –

回答

3

您可以使用DateTime.Parse()有关信息,请参见here。虽然,你必须在那里有一年的时间。

DateTime convertedDate = DateTime.Parse("Sat, Sep 22 2012"); 

编辑:

因为我们不知道,如果你知道你正在处理的是哪一年,我建议你可以使用这样的:

Int32 thisYear = DateTime.Now.Year; 
string aDate = "Sat, Sep 22"; 
DateTime outDate; 
while (!DateTime.TryParse(aDate + " " + thisYear.ToString(), out outDate))   
    thisYear--; 

这将得到适合描述的最近一年的DateTime。如果您尝试使用“周五,9月22日”的aDate,则结果将为“9/22/2006”。

或者,如果你只是想用“今年”你可以只使用这样的:

String[] myDate = ("Fri, Sep 22").Split(','); 
DateTime convertedDate = DateTime.Parse(myDate[1].ToString()); 
+0

DateTime.Parse()不需要日期。它将采用海报提供的输入并假设当前年份。 – McArthey

+0

我希望能够“聪明地”确定基于星期几的一年,但尝试“星期六,9月24日”(这将是2011年)只是给出了错误:字符串未被识别为有效的日期时间,因为星期几是不正确的。 – McArthey

+0

@McArthey,我刚刚在我的IDE中试过。你是对的!我每天都会学到新的东西。我不知道它会假设今年。 – davehale23

2
DateTime result; 
DateTime.TryParse("Sat, Sep 22", out result); 
Response.Write(result.ToString("yyyy/M/dd")); 

这不今年解析。在这种情况下,输出是“2012/9/22”。

+0

试过这个,但给出了一个值,如'0001/1/01' – leeb898

+0

@ leeb898 - 用新信息更新你的问题。 –

+0

从http://msdn.microsoft.com/en-us/library/ch92fbc1(v=vs.90).aspx。当此方法返回时,如果转换成功,则包含等同于s中包含的日期和时间的DateTime值,如果转换失败,则包含DateTime.MinValue。如果s参数为空,则该转换失败,是空字符串(“”),或者不包含日期和时间的有效字符串表示形式。 – McArthey

1

SQL Server支持一些特定的日期格式。您可以使用yyyy-MM-dd格式。请检查以下代码:

string dt = DateTime.Now.ToString("yyyy-MM-dd"); 

您不应该担心日期如何存储。您可以以任何您想要的格式显示日期,并且可以在SQL Server和.Net中完成。

see reference