2015-04-26 2 views
3

Я пытаюсь преобразовать строку в определенный формат даты и времени.Преобразование времени unix в определенный формат даты и времени с информацией о культуре

У меня есть строка:

1431075600 

и я пытаюсь преобразовать это следующим образом:

private static IFormatProvider culture = new System.Globalization.CultureInfo("en-GB"); 
model.DeliveryDate = DateTime.Parse(data.DeliveryDate, culture, System.Globalization.DateTimeStyles.AssumeLocal); 

Я получил сообщение об ошибке:

String was not recognized as a valid DateTime. 

Наконец, я хочу иметь DateTime в формате, как

Friday, 8 May 2015 hour: 09:00 
+1

В каком формате даты используется ваша строка ввода? Я предполагаю, что это временная метка Unix? Затем вы можете найти ответ: http://stackoverflow.com/a/17632585/860913 –

ответ

3

Ваша строка выглядит как: Unix Time, истекло через секунды с 1 January 1970 00:00 UTC.. Вот почему вы не можете напрямую разобрать его на DateTime. Сначала вам нужно создать время unix и добавить это значение как второе.

Вот почему вам нужно добавить свою строку как секунду к этому значению;

var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
dt = dt.AddSeconds(1431075600).ToLocalTime(); 

И вы можете форматировать строку после этого с английского на основе культуры линии InvariantCulture;

Console.WriteLine(dt.ToString("dddd, d MMM yyyy 'h'our: HH:mm", 
           CultureInfo.InvariantCulture)); 

Результат будет;

Friday, 8 May 2015 hour: 09:00 

Здесь в demonstration.

Смежные вопросы