2014-10-24 6 views
3

У меня есть объект даты в JavaScript, который дает мне: "Wed Oct 01 2014 00:00:00 GMT+0200";Parse Javascript date to C# DateTime

Я пытаюсь разобрать его, но я получаю исключение:

string Date = "Wed Oct 01 2014 00:00:00 GMT+0200"; 
DateTiem d = DateTime.ParseExact(Date, 
           "ddd MM dd yyyy HH:mm:ss GMTzzzzz", 
           CultureInfo.InvariantCulture); 

ответ

4

MM format specifier является 2 цифры месяца число от 01 до 12.

Вместо этого сокращенное название месяца необходимо использовать MMM format specifier.

И для вашей части +0200 вам необходимо использовать K format specifier с информацией о часовом поясе, а не zzzzz.

И вам нужно использовать одинарные кавычки для вашей GMT как 'GMT', чтобы указать его как литеральный разделитель строк.

string s = "Wed Oct 01 2014 00:00:00 GMT+0200"; 
DateTime dt; 
if(DateTime.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K", 
          CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
{ 
    Console.WriteLine(dt); 
} 

Любой z format specifier не рекомендуется с DateTime разборе. Поскольку они представляют signed offset местного значения UTC местного времени, и этот спецификатор не влияет DateTime.Kind property. И DateTime не сохраняет значение смещения.

Именно поэтому этот спецификатор подходит вместо DateTimeOffset.