2011-05-18 59 views
-1

我想在C#來解析DateTime和具有下面的代碼行:試圖解析在C#中的DateTime

string dt =Convert.ToString(DateTime.FromFileTime(e8.sts[counter8].TimeStamp)); 
string format = "dd-MM-yyyy HH:mm:ss"; 
DateTime dateTime = DateTime.ParseExact(dt, format,CultureInfo.InvariantCulture); 

當調試dt即將作爲05/18/2011 09:25:17 AM,但我得到了厚望說:

字符串未被識別爲有效的 DateTime。

+1

看着你的評論,我越來越清楚*解析*不是問題,並且你真的想要*輸出* DateTime到自定義字符串格式。你能否編輯你的問題,並添加一些說明你正在尋找什麼?特別是推送到MySql似乎是你的要求,你不會在你的問題中提到它。 – 2011-05-18 07:39:22

回答

1

您的日期時間快到了作爲MM-dd-yyyy但你試圖解析它作爲dd-MM-yyyy

您的格式字符串更改爲"MM-dd-yyyy HH:mm:ss tt"

可以這麼說,作爲dt,使用當前的格式字符串,是試圖將被解析爲18個月2011(年)的(MM)的第5天(DD)...

編輯:
對不起,我完全錯過了AM/PM指示符,您需要格式字符串的tt部分。這將處理字符串

EDIT 2的AM/PM部分:
根據你最近的評論,你想將它轉換爲MM-dd-yyyy HH:mm:ss字符串,你需要做的一切是:

var outputString = DateTime.FromFileTime(e8.sts[counter8].TimeStamp).ToString("MM-dd-yyyy HH:mm:ss"); 

您已經在val; id .NET DateTime對象中擁有TimeStamp,因此您只需執行帶有所需時間格式的.ToString()即可。

+0

它會顯示相同的異常 – vrushali 2011-05-18 04:38:00

+0

你想用代碼做什麼呢? – 2011-05-18 04:43:35

+0

我會像你告訴我的變化,但它會顯示相同的異常 – vrushali 2011-05-18 04:53:30

1

這不是預期的嗎?日期05/18/2011 09:25:17 AM與您的格式字符串dd-MM-yyyy HH:mm:ss不匹配。你的日期格式爲MM/dd/yyyy HH:mm:ss tt

試試這個:

DateTime dateTime = DateTime.Parse("05/18/2011 09:25:17 AM"); 
+0

但我想將此日期時間格式轉換爲dd-MM-yyyy HH:毫米:ss – vrushali 2011-05-18 04:42:12

+0

@vrushali - 所以你有這樣的日期作爲輸入'05/18/2011 09:25:17 AM',你想把它轉換爲像這樣的字符串'18-05-2011 09:25:17 '? – 2011-05-18 04:45:30

+0

yes,05-18-2011 9:25:17這種格式也接受 – vrushali 2011-05-18 04:51:23

3

出發,你有沒有需要轉換。

DateTime.FromFileTime(e8.sts[counter8].TimeStamp)返回DateTime已經...

即使如此,與您所提供的字符串,DateTime.Parse(str)會照顧你。

如果你最終在一個文本文件中存儲這個值,真的是死心塌地上使用自定義格式字符串解析它(你不需要):

你擁有的格式:

Day/Month/Year 24-hour:minute:second 

但看你的輸入日期:

2011年5月18日上午09點25分十七秒

你想:

Month/Day/Year 12-hour:minutes:seconds AM/PM 

格式爲你想要的是:

MM/dd/yyyy hh:mm:ss tt 
+0

我將從OPC服務器讀取日期時間,它將返回時間戳值」129501645169843750「,所以我將轉換這個時間戳來獲取日期時間。我將以這種格式「MM/dd/yyyy hh:mm:ss tt」獲取日期時間,我想將此時間格式轉換爲「MM-dd-yyyy HH:mm:ss」格式,因爲當我將被存儲日期時間在MYSQL數據庫中作爲日期時間字段&MYSQL不接受這種格式「MM/dd/yyyy hh:mm:ss tt」 – vrushali 2011-05-18 04:45:50

+0

@vrushali:顯示的代碼示例詢問如何解析DateTime,而不是如何輸出以自定義字符串格式。你想知道如何輸出到自定義的「MM-dd-yyyy HH:mm:ss」字符串格式嗎? – 2011-05-18 07:36:56

1

我看不出有任何理由的轉換。只需使用:

DateTime.FromFileTime(e8.sts[counter8].TimeStamp) 
+0

我將從OPC服務器讀取日期時間,它將返回時間戳值「129501645169843750」,因此我將將此時間戳轉換爲獲取日期時間。我將以這種格式「MM/dd/yyyy hh:mm:ss tt」獲取日期時間,我想將此時間格式轉換爲「MM-dd-yyyy HH:mm:ss」格式,因爲當我將被存儲日期時間在MYSQL數據庫作爲日期時間字段&MYSQL不接受這種格式「MM/dd/yyyy hh:mm:ss tt」 – vrushali 2011-05-18 04:58:25

0
DateTime parsed = DateTime.ParseExact(dt,"MM/dd/yyyy HH:mm:ss tt",CultureInfo.InvariantCulture); 
0

的許多其他人都在這裏解釋的,需要改變的格式。但是,即使我嘗試了他們提出的格式,我仍然收到了與您所做的相同的錯誤。最終我選擇了正確的格式來獲得成功的結果。

格式應該是:

string format = "MM/dd/yyyy HH:mm:ss tt"; 

,因爲您指定的時間模式,如AM。如果月份是以一位數字表示的,例如:5,那麼MM應該用M代替。我在日期之間使用了斜槓而不是大寫,因爲這是原始日期的給定方式。

+0

但我想轉換這種格式在「MM-dd-yyyy HH:mm:ss」 – vrushali 2011-05-18 05:38:18