Дата публикации в основном API Asp.net

1
задан realist 16 January 2019 в 20:38
поделиться

2 ответа

Попробуйте этот атрибут JsonConvert для пользовательской даты

public class MyDateTimeConverter : IsoDateTimeConverter
{
    public MyDateTimeConverter()
    {
        base.DateTimeFormat = "dd-MM-yyyy";
    }
}

И используйте атрибут для своего свойства как

public class MyClass
{
    [JsonConverter(typeof(MyDateTimeConverter))]
    public DateTime MyDate { get; set; }
}

, это автоматически преобразует тело в ожидаемый формат.

Если вы ожидаете все свойства datetime в этом формате, добавьте эти глобальные настройки в ваши startup.cs

services.AddMvc()  
   .AddJsonOptions(options =>  
   {  
     options.SerializerSettings.DateFormatString= "dd-MM-yyyy";  
   });  

Но вы должны убедиться, что все значения, указанные для этого свойства, должны быть в предоставленном формат. Надеюсь, это поможет :)

0
ответ дан Farshan 16 January 2019 в 20:38
поделиться

Если вы хотите изменить культуру, используемую вашим сервисом, вы можете установить ее в Startup.cs и добавить в метод Configure().

Это работает для меня (добавьте его до app.UseMVC()):

        var defaultCulture = new CultureInfo("tr-TR");
        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture(defaultCulture),
            SupportedCultures = new List<CultureInfo> { defaultCulture },
            SupportedUICultures = new List<CultureInfo> { defaultCulture }
        });

РЕДАКТИРОВАТЬ

Хорошо, поэтому я проверил это, и он корректно отображает дату в дд.ММ.ГГГГ формат, когда я звоню .ToShortDateString(), поэтому я думал, что это работает. Но когда я проверял POSTing дату, она не будет правильно связываться / анализироваться. Однако он успешно проанализирует дату в формате MM.dd.yyyy. Похоже, вам нужно добавить культуру, используя app.UseRequestLocalization(...) и , чтобы указать сериализатору JSON также использовать правильный формат (как сказал @Farshan).

ОБНОВЛЕНИЕ

Можно установить культуру сериализатора JSON. Вы можете установить его в AddJsonOptions(). Это работает для меня. Попробуйте добавить это к методу ConfigureServices, и, надеюсь, это решит проблему.

services.AddMvc()
    .AddJsonOptions(options =>
        {
            options.SerializerSettings.Culture = new CultureInfo("tr-TR");
            // next line probably not needed
            // options.SerializerSettings.DateFormatString = "dd.MM.yyyy"; 
        });
0
ответ дан realist 16 January 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: