2013-04-25 10 views
10

Czy istnieje jakiś sposób, aby uzyskać krótki format daty systemowej w JavaScript?JavaScript - Get format systemu krótki termin

Na przykład czy krótka data systemowa jest w amerykańskim formacie np. m/d/Y lub w języku europejskim np. d/M/Y

Uwaga: To nie jest pytanie o datę formatowania lub jej obliczenia oparte na geolokalizacji, lecz o uzyskanie format z systemu OS/

+0

Pytasz, czy można dowiedzieć się, który z nich użytkownik ma w w prawym dolnym rogu ekranu? A może pytasz, który użytkownik * powinien * bazować na swojej lokalizacji? – George

+0

Nie sądzę, –

+0

Witam F4r-20. Tak, miałem na myśli domyślny czas systemu - zegar też go używa. – WooDzu

Odpowiedz

3

Po szczypcie badań doszedłem do wniosku, że technicznie nie można uzyskać ustawień regionalnych, a przez to formatu daty, ale można zrobić kilka innych rzeczy. Wybierz jedną z poniższych opcji:
a) wspomniany już -i outdated- "toLocaleString()" Funkcja:

var myDate = new Date(1950, 01, 21, 22, 23, 24, 225); 
var myDateFormat = myDate.toLocaleString(); 
alert (myDateFormat);

zagadnienia:
1) Nie można "myDateFormat.replace", aby uzyskać datę maski jako miesiąc nie jest zapisany jako "01", "02", itp. w łańcuchu, ale jako tekst, w oparciu o ustawienia narodowe (np. "luty" w języku angielskim, ale jest "Φεβρουάριος" w języku greckim i kto wie, co np. w Klingonie).
2) Różne zachowania w różnych przeglądarkach
3) Różne zachowania w różnych wersjach systemu operacyjnego i przeglądarki ...

b) Użyj funkcji toISOString() zamiast toLocaleString(). Nie dostaniesz maski daty ustawień regionalnych, ale otrzymasz datę, od której dowiesz się, w której części daty (np. Gdzie "miesiąc" lub "dzień" znajduje się w tym ciągu znaków). Można również pracować z funkcjami getUTCDate(), getUTCMonth() i getUTCDay(). Nadal nie możesz określić, jakiego formatu daty używa klient, ale możesz określić, który rok/miesiąc/dzień/itd. Będziesz pracował, kiedy pobierzesz datę; skorzystaj z powyższego code, aby przetestować funkcje, o których tutaj wspomniałem, aby zobaczyć, czego możesz się spodziewać.

c) Czytaj Inconsistent behavior of toLocaleString() in different browser artykuł i używać IMHO doskonałe rozwiązanie() tam opisane

+0

Witaj Mark, dzięki za twoją odpowiedź. Udostępniam twój punkt, ale nadal jest on przekazywany w przeglądarce – WooDzu

+0

Jeśli masz na myśli opcję "c" tak, masz rację, problem jest odnotowywany jako problem z przeglądarką, ale rozwiązanie jest bardziej ogólne.Z drugiej strony chciałbym pójść z "b", gdybym był tobą. Jeśli musisz znać maskę formatu daty, jest jeszcze jedna opcja: "myDateFormat.replace (" 1950 "," yyyy ");", itd. - ale w tym miesiącu musisz znaleźć ciąg znaków start-end i zastąpić ten zakres wartością "mm" - co sprawia, że ​​twój skrypt jest trochę zbyt skomplikowany, możliwy nawet do celu ... –

+0

Jedynym problemem jest to, że jeśli na przykład mój zegar systemowy, arkusz kalkulacyjny excell i cała masa innych aplikacji używa d/m/Y i moja przeglądarka wykryłaby "en-US" z jakiegoś powodu (tak to robi) użyje formatu en-US, tj. m/d/Y – WooDzu

0

To nie jest możliwe. Możesz pobrać kulturę z przeglądarki użytkownika i użyć niektórych bibliotek js do przekonwertowania na prawidłowy format daty. http://code.google.com/p/datejs/

+0

Zobacz notatkę na moje pytanie – WooDzu

+1

Odpowiedź brzmiała "nie". Nie jest możliwe, że dałeś ci kilka wskazówek. :) – Reno

-1

Przymież Date.CultureInfo.formatPatterns.shortDate

+0

Witam. Po prostu sprawdziłem. Skąd wziąłeś CultureInfo? Obiekt Date w Firefox i Chrome go nie ma – WooDzu