W Kanadzie wszyscy znają format daty YYYY-MM-DD
. W Europie lub Południowej Afryce wolą DD-MM-YYYY
. Są użytkownicy z Południowej Afryki, którzy mylą się z YYYY-MM-DD
formatem daty. Czy istnieje sposób na poradzenie sobie z tą sytuacją?
Myślałem o użyciu następującego formatu metody dla wszystkich: Feb 02, 2011
websites
date-format
formatting
standards
ambiguity
Thierry Lam
źródło
źródło
DD-MM-YYYY
”. Z wyjątkiem np. Na Węgrzech (YYYY.MM.DD
) lub w Finlandii (DD.MM.YYYY
) lub ... Niestety, rzeczywistość jest brudna :-(prefix_1999_12_23_16_45_53.ext
. Główny powód: to było naprawdę łatwe do sortowania, WYSZUKIWANIA i parsowania. Podczas wyszukiwania naprawdę chcesz zacząć od najważniejszej jednostki, aby jak najszybciej osiągnąć cel. Ten rodzaj łańcucha jest nawet przyjazny dla drzewa binarnego. W laboratorium dominowali studenci z Europy, ale myślę, że był to zdrowy rozsądek, jeśli nie standard naukowy. Jednak w kraju, w którym dorastałem, używamy DD-MM-RRRR do codziennego użytku. Uzasadnienie: kiedy się obudzisz, jaką pierwszą część chcesz wiedzieć?Odpowiedzi:
Dwuznaczne jest to, aby odróżnić dzień od miesiąca, jeśli są one reprezentowane przez numery.
Czy 02/03 oznacza 03 lutego czy 02 marca?
Zmieniając identyfikator miesiąca z jego numeru z nazwą , usuwasz tę dwuznaczność. Aby odpowiedzieć na twoje pytanie, twój wariant
Feb 02, 2011
wydaje się dobrym rozwiązaniem.Nadal istnieje potencjalny problem z numerem roku, jeśli piszesz go tylko z 2 cyframi, ale łatwo go naprawić (użyj 4).
źródło
Nie. Nie ma powszechnie uznanego formatu daty.
ISO 8601 Definiuje międzynarodowy standard formatów dat. Jako taki jest to prawdopodobnie najlepszy kompromis. Ale jak mówisz, użytkownicy nie zawsze lubią ten format.
Jedynym poprawnym rozwiązaniem jest przedstawienie innego formatu dla różnych krajów. Może się okazać, że istnieje standardowa biblioteka do osiągnięcia tego, jeśli wybrany język programowania ma znaczące poparcie.
źródło
Powinieneś do tego użyć informacji o kulturze. Lub przynajmniej lokalny format wyświetlania.
W JavaScript możesz użyć metody toLocaleString dla klasy Date .
W przypadku C # możesz użyć ciągu formatu podczas korzystania z ToString .
Szybka wyszukiwarka Google powinna pokazać, jak korzystać z kultury w wybranym języku.
źródło
Wybrałbym RRRR-MM-DD (i zawsze wypisuję czterocyfrowe lata i dwucyfrowe miesiące i dni). O ile wiem, RRRR-DD-MM jest czymś niezwykłym i rzadkim, więc format RRRR-MM-DD jest najmniej dwuznaczny, a w końcu Twoi użytkownicy go złapią. Ponadto zyskujesz przewagę sortowania trywialnego.
źródło
Czy możesz podać każdemu użytkownikowi swoje własne ustawienia regionalne, które następnie wyświetlają daty i inne informacje zgodnie z lokalnymi preferencjami?
źródło
Wiele razy możesz skonfigurować ustawienia regionalne i używać I18n w większości frameworków.
źródło
W ogólnym przypadku będziesz musiał określić zarówno format, jak i wartość. Jest to jedyny sposób, aby uniknąć nieporozumień. Na przykład możesz powiedzieć „2011-02-02 (RRRR-MM-DD)”. Dzieje się tak kosztem prostoty i czytelności, więc poznaj swoich odbiorców.
Możesz oczywiście powiedzieć „Odtąd wszystkie daty są w formacie RRRR-MM-DD ....” Wtedy „2011-02-02” pojawiający się później będzie jednoznaczny. To może być smaczniejsze, ale ponownie poznaj swoich odbiorców.
źródło
Ta sugestia jest prawdopodobnie bezużyteczna, ale widziałem miesiące pisane cyframi rzymskimi. Jasne, 3 / XI / 2011 może być 11 listopada lub 3 marca, ale myślę, że pierwsza interpretacja jest bardziej naturalna.
źródło
Powiedziałbym, że to zależy od tego, co robisz, ile masz kontroli nad danymi wejściowymi i czy gdzieś je przechowujesz?
Do przechowywania użyłbym tego, co sugerował Mike Dunlavey:
Nie zostawił tego jako odpowiedzi, więc zrobię to.
Jeszcze jedno: sprawdź poniższy zrzut ekranu, jak wpisać datę wygaśnięcia CC: http://www.ubercart.org/files/credit_card_checkout.jpg
Wspaniałą rzeczą w tym przykładzie jest to, że nie sprawia, że myślisz. Używa zarówno liczb, jak i nazw dla miesiąca. Rozważyłbym użycie czegoś podobnego do danych wejściowych. Dla miesiąca podaj zarówno numer, jak i zlokalizowaną nazwę. Dla roku i dnia użyj numerycznych pól Up / Down lub pól kombi. Wtedy kontrola kalendarza również wydaje się sprytna.
Jak powiedziałem, to zależy. Do przechowywania: jeśli korzystasz z bazy danych, sprawdź, czy już zapewnia dobry jednoznaczny format danych. Jeśli używasz innej metody, sprawdź, czy „RRRRMMDDGGMMSS, gdy godzina jest w UTC”, pomaga. Aby przedstawić to użytkownikowi - weź pod uwagę, jakie kraje / lokalizacje mogą być zaangażowane, a następnie wybierz najprostszą reprezentację typu „Nie każ mi myśleć”. Rozważ też podanie opcji.
Na koniec sprawdź kilka fajnych produktów, które już robią coś podobnego, i spróbuj dowiedzieć się, jak to robią.
źródło
Nie ma uniwersalnego formatu daty i godziny dla użytkowników końcowych witryny. Nie ma również pojedynczej wartości daty i godziny, ponieważ wartość ta jest różna dla strefy czasowej klienta. Powinieneś używać globalizacji - jej ukierunkowania na dane, czas, walutę, kalendarz, formaty nubmerów w oparciu o kulturę użytkowników (można je otrzymać z akceptowanych języków przekazywanych z przeglądarki użytkownika lub przełącznika zaimplementowanego bezpośrednio w Twojej aplikacji). Niektóre interfejsy API (na przykład .NET) mają bezpośrednie wsparcie dla tych funkcji.
Do przechowywania daty i godziny w bazie danych użyj formatu uniwersalnego - UTC (uniwersalny czas współrzędnych).
źródło
To niefortunne, że cała inteligencja w międzynarodowym świecie komputerów nie jest w stanie złamać tego szaleństwa.
Ani Microsoft, ani inni dostawcy nie rozważają dodania maski daty, która sprawiłaby, że Miesiąc wydawałby się wypełniony zerami, podobnie jak Dzień, ale jako trzy cyfry. Przyjęcie praktyki pomogłoby promować nową serię zmodyfikowanych formatów dat, które są matematycznie równoważne, pozostając jednocześnie łatwymi do zidentyfikowania i rozróżnienia w dowolnym z tradycyjnych układów dat. To jest:
0 MM-DD-RRRR, np. 002-03-2016 dla 03,2016 lutego
DD-0MM-RRRR, np. 03-002-2016 na 03 lutego 2016 r
RRRR-0MM-DD, np. 2016-002-03 na 03.03.2016
RRRR-DD-0MM, np. 2016-03-002 (jeśli ktoś chciałby go użyć!)
Wydaje się to zbyt łatwe, aby to naprawić ... Myślę, że proste po prostu nie sprzedają się dobrze.
źródło