C # DateFormatString для смещения по Гринвичу - PullRequest
0 голосов
/ 11 июня 2019

Мне нужно использовать JSON с данными DateTime в формате, подобном следующему:

Tue Jun 11 00:00:00 +0100 2019

Я считаю, что +0100 - это смещение по Гринвичу (+0100 - британскоеЛетнее время).Я десериализирую это, используя C # newtonsofts JsonConvert.например,

List<Staff_Extra> staff_Extras = JsonConvert.DeserializeObject<List<Staff_Extra>>(jStaffExtra.ToString(), new JsonSerializerSettings
{
    DateFormatString = "ddd MMM dd hh:mm:ss yyyy" 
});

Это вызывает исключение из-за смещения.Как должен выглядеть DateFormatString для учета этого смещения?

пример кода https://www.newtonsoft.com/json/help/html/DeserializeDateFormatString.htm

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Добавьте zzz для части токена часового пояса. Другие токены можно найти здесь .

0 голосов
/ 11 июня 2019
  • Если вы хотите прочитать это время как Преобразовать в местное время , используйте

    DateTime.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null);

    Это время вернется как 6/10/2019 5:00:00 PM (я в MDT, культура США)

  • Если вы хотите считать это время как местное время и сохранить исходный часовой пояс , используйте

    DateTimeOffset.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null);

    Это время будет возвращено как 6/11/2019 12:00:00 AM +01:00 (сохраняет смещение часового пояса)

  • Если вы хотите прочитать это как местное время и игнорировать смещение часового пояса , используйте:

    DateTimeOffset.ParseExact(test, "ddd MMM dd hh:mm:ss zzz yyyy", null).DateTime;

    Это время будет возвращено как 6/11/2019 12:00:00 AM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...