Jak odczytac systemowy format daty z komputera klienta?

0

Pisze aplikacje www w C# za pomoc visual webgui (dziala to podobnie do ASP.NET). Dlatego pewnie mozna to tak samo wyciagnac jak w ASP.NET.

Na stronie chcialbym wyswietlac pole z data i godzina w formacie takim jak na ustawiony odwiedzajacy strone, a nie tak jak jest ustawione na serwerze.

Jest to w ogole wykonalne? Z gory dzieki za pomoc,

0

Nie mam zielonego pojęcia jaki system template'ów masz w tym visual webgui, ale umieść sobie datę w takim elemencie:

<time datetime="{0}">{1}</time>

Gdzie {0} to data w formacie zgodnym ze specyfikacją, tj. np. jakaśData.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"), a w {1} wstaw sobie co tam chcesz, żeby było domyślnie albo gdyby ktoś miał wyłączony javascript, np. jakaśData.ToString(CultureInfo.GetCultureInfo("en-US")).

Po stronie klienta możesz zamienić treść takim skryptem (użyte jQuery):

$(document).ready(function () {
    $('time[datetime]').each(function (idx, element) {
        var $element = $(element);
        var date = new Date($element.attr('datetime'));
                
        if(!isNaN(date.getTime()))
            $element.text(date.toLocaleString());
    });
});

Druga możliwość to odczytanie locale z requestu (nagłówek Accept-Language) i sformatowanie daty zgodnie z tym locale jeszcze po stronie serwera. Plus jest taki, że nie dzieje się to po client-side, a minus to zignorowanie formatów, które użytkownik mógł w systemie zmienić sobie sam (ja przez długi czas miałem zmieniony format krótkiej daty).

0
Rev napisał(a):

Druga możliwość to odczytanie locale z requestu (nagłówek Accept-Language) i sformatowanie daty zgodnie z tym locale jeszcze po stronie serwera. Plus jest taki, że nie dzieje się to po client-side, a minus to zignorowanie formatów, które użytkownik mógł w systemie zmienić sobie sam (ja przez długi czas miałem zmieniony format krótkiej daty).

W jaki sposob moge odczytac Request? Wlasnie nie wiem czy jest to mozliwe, ale najlepiej dla mnie byloby odczytac CultureInfo z danego komputera. Tzn wszystko to, co jest w Panelu sterowania, format daty itp...

PS. Tylko wlasnie pisanie w Webgui, to w zasadzie tworzenie aplikacji w WinForms, ktora pozniej automatycznie tlumaczona jest do HTML5.

0

Nie da się odczytać danych (dokładnych) globalizacji komputera klienta - takie informacje po prostu nie idą w HTTP, a i nie wiem jak się JavaScript przy tym zachowa.

Request odczytujesz chyba obiektem który nazywa się Request, typu System.Web.HttpRequest, w nim znajduje się kolekcja wysyłanych do serwera nagłówków, standardowo leci m.in. nagłówek Accept-Language, ale to definiuje tylko jakiego języka (języków, bo może polecieć lista języków z priorytetami każdego z nich) oczekuje klient, a nie daje informacji o formacie daty. Znaczy da się użyć, ale to nie będzie absolutnie dokładne.

Problemem jest to, że np. taki Chrome, na moim angielskim Windows z polskimi ustawieniami regionalnymi życzył sobie tekstu strony w języku en-US, nawet gdy sam był w języku polskim...

0

^^ no to wychodzi na to ze sie nie da :/

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