2016-12-20 3 views
4

У меня возникла проблема с форматом DateTime, который используется ServiceStack.ServiceStack DateTime Обработка

Например, у меня есть простой объект запроса, подобный этому.

public class GetAllUpdatedStudents : IReturn<GetAllUpdatedStudentsResponse> 
{ 
    public DateTime LastUpdate { get; set; } 
} 

При подаче DateTime (мм/дд/год) 12/10/2016, ServiceStack преобразует его в формат DateTime из (дд/мм/год), так что система считает, что вместо того, чтобы 12 октября от 10 декабря.

Как сообщить ServiceStack об этом не так, и нам нужен формат mm/dd/yyyy при привязке свойств DateTime к запросам объектов?

ответ

1

Самый подходящий и наименее двусмысленный способ отправить DateTime по проводу - всегда использовать ISO 8601 Date Format. ServiceStack поддерживает несколько форматов дат с многочисленными вариантами IS0 8601, но в ServiceStack нет конфигурации, которая поддерживает форматы за месяц до даты, например mm/dd/yyyy, которая интерпретируется как dd/mm/yyyy. Но чтобы избежать какой-либо двусмысленности, вы должны идеально отправлять форматы YYYY-MM-DD.

Если вам нужно принять MM/DD/YYYY вы можете изменить его в строку, например:

public class GetAllUpdatedStudents : IReturn<GetAllUpdatedStudentsResponse> 
{ 
    public string LastUpdate { get; set; } 
} 

Затем разобрать его, используя свой предпочтительный формат DateTime в вашей реализации услуг.

Вы можете переопределить встроенный в DateTime сериализации разобрать его в конкретной формат даты с чем-то вроде:

JsConfig.DeSerializeFn = str => { 
    return DateTime.ParseExact(str,"MM/dd/yyyy",null); 
}; 

Но я бы не рекомендовал делать это, как ваши услуги не будет, как взаимодействовать.

+1

Отлично. Я фактически сделал почти то же самое. Я изменил все свои свойства DateTime на String. Затем, используя плагин проверки, я проверил, что строка передается в формате YYYY-MM-DD. Затем следующий шаг - подтвердить, что дата фактически является допустимой датой. Должен сказать, что ServiceStack снова сделал программирование! Спасибо. – cletisgipson

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