2014-08-28 63 views
2

我的DevExpress dateedit對象和我向選定的日期從客戶方控制器,但我不能我的字符串的日期值轉換爲datetime值如何格式化字符串到日期時間?

當我嘗試我得到這個錯誤=>string was not recognized as a valid DateTime

我的字符串日期值= >Thu Aug 28 2014 00:00:00 GMT+0300 (Turkey Daylight Time)

轉換代碼=>

DateTime startDate = DateTime.ParseExact(sDate, "ddd MMM d yyyy HH:mm:ss zzzz", CultureInfo.InvariantCulture); 

我應該怎麼辦格式化這個字符串?

+0

首先:'zzzz' - 沒有4'z'的格式說明符。第二,你確定'D'格式是什麼? – 2014-08-28 09:58:38

回答

2

首先將日期字符串轉換爲日期,然後將日期轉換爲ISO並將其發送到服務器。這將工作。

var date = new Date("Thu Aug 28 2014 00:00:00 GMT+0300") 
var sDate = date.toISOString(); 
+0

仔細閱讀問題。@ Eren嘗試將字符串值轉換爲datetime。 – user3217843 2014-08-28 10:01:01

+0

@ user3217843,我在客戶端(javascript)以可以在服務器端解析的格式轉換值。即使你不需要服務器上的字符串,也可以將sDate設置爲DateTime,並在此情況下自動分配。 – 2014-08-28 10:06:55

+0

感謝您的回答這是工作。 – Eren 2014-08-28 10:11:16

3

你需要 「逃離」 與單引號無法識別的符號:

var sDate = "Thu Aug 28 2014 00:00:00 GMT+0300 (Turkey Daylight Time)"; 
var format = "ddd MMM dd yyyy HH:mm:ss 'GMT'zzzz '(Turkey Daylight Time)'"; 

DateTime startDate = DateTime.ParseExact(sDate, format, CultureInfo.InvariantCulture); 

Console.WriteLine(startDate); 

打印:

8/28/2014 12:00:00 AM 

在第三組與單d效果很好,增加了一個只爲清晰。

單引號或雙引號表示字面字符串分隔符。您可以閱讀並查看更多示例。msdn article on DateTime formats

0

嘗試先使用正則表達式除去未知格式。

var sDate = @"Thu Aug 28 2014 00:00:00 GMT+0300 (Turkey Daylight Time)"; 
var sDateOnly = Regex.Replace(sDate, @"\s*(\(.*\))", m => string.Empty); 
var f = @"ddd MMM d yyyy HH:mm:ss \G\M\Tzzzz"; 
DateTime startDate = DateTime.ParseExact(sDateOnly, f, CultureInfo.InvariantCulture);