Problem z formatem daty?

0

Witam

Mam aplikację WEB-ową (ASP.NET MVC + EntityFramework).

W trakcie pisania korzystałem z VisualStudio 2017 i LocalDB
utworzone formularze działały poprawnie, dane bez problemu były zapisywane do bazy.

po przeniesieniu aplikacji na serwer 2012R2 EN lokale ustawione na POLSKIE (data w systemie wyświetlana jest 2018-05-17)
oraz serwerem SQL 2017 Express (Instancja language English US, Server Collation Polish_CI_AS, Baza Default Language Polski, Collation POLISH_CI_AS).

Problem polega na tym że jak uruchomię stronę z poziomu VisualStudio (łaczac się do bazy na serwerze) jest wszystko OK, rekord jest zapisywany do bazy.
jeśli uruchomię stronę z poziomu przeglądarki łącząc się z IIS serwerem przy zapisie zawartości formularza do bazy otrzymuję błąd formatu daty jak w zał.

Data w formularzu wyświetlana jest w formacie 17.05.2018 13:58 błąd The value '17.05.2018 13:58' is not valid
data w tabeli jest przechowywana 2018-05-17 1400.000.

Jak mogę rozwiązać ten problem i gdzie go szukać, w konf. serwera?
Czy z poziomu Modelu mogę wymusić format daty?
[DisplayName("Data opublikowania informacji")]
[DataType(DataType.Date)]
public DateTime ArtOpublikowanyOd { get; set; }
a może datę konwertować z poziomu widoku lub kontrolera?

Dodam tylko że w formularzu pole daty jest to Html.EditorFor+bootstrap-datepicker

        <div class="form-group">
            @Html.LabelFor(model => model.ArtOpublikowanyOd, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <div class='input-group date' id='datetimepicker11'>
                    @Html.EditorFor(model => model.ArtOpublikowanyOd, new { htmlAttributes = new { @class = "form-control" } })
                    <span class="input-group-addon">
                        <span class="glyphicon glyphicon-calendar"></span>
                    </span>
                </div>
                @Html.ValidationMessageFor(model => model.ArtOpublikowanyOd, "", new { @class = "text-danger" })
            </div>
        </div>

Dzięki z pomoc,
Pozdrawiam.

0

MI problem daty zawsze rozwiązywał taki atrybut w ViewModelu

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
0
GAMMIS napisał(a):

po przeniesieniu aplikacji na serwer 2012R2 EN lokale ustawione na POLSKIE (data w systemie wyświetlana jest 2018-05-17)

Wtrącenie w nawiasie nie potwierdza tezy z właściwego zdania, bo to nie jest poprawna polska data. :)

Data w formularzu wyświetlana jest w formacie 17.05.2018 13:58 błąd The value '17.05.2018 13:58' is not valid

Czyli jest wyświetlana prawidłowo po polsku.

data w tabeli jest przechowywana 2018-05-17 1400.000.

Nie jest tak przechowywana - w bazie jest to zapewne po prostu ośmiobajtowa liczba. Po prostu program, w którym oglądasz tabelę wyświetla datę zgodnie z ISO-8601.

Dodam tylko że w formularzu pole daty jest to Html.EditorFor+bootstrap-datepicker

Tak myślałem. Tu masz dokładny opis przyczyn Twojego problemu i sposoby jego rozwiązania:
http://commitandrun.pl/2016/04/15/Bootstrap-datepicker_i_ASPNETMVC/
http://commitandrun.pl/2016/04/16/Jak_Microsoft_zwalcza_polska_kulture/

1

Dzięki za pomoc

problem rozwiązałem dodaniem w pliku js linii ustawiającej format daty

format: 'YYYY.MM.DD HH:mm',
    $('#datetimepicker11').datetimepicker({
        locale: 'pl-PL',
        viewMode: 'years',
        daysOfWeekDisabled: [0],
        format: 'YYYY.MM.DD HH:mm',
    });

1 użytkowników online, w tym zalogowanych: 0, gości: 1