Jak mogę wygenerować nazwę miesiąca (np. Październik / październik) z tego obiektu daty w JavaScript?
var objDate = new Date("10/11/2009");
Jak mogę wygenerować nazwę miesiąca (np. Październik / październik) z tego obiektu daty w JavaScript?
var objDate = new Date("10/11/2009");
Odpowiedzi:
Krótsza wersja:
Uwaga (2019-03-08) - Ta odpowiedź, którą pierwotnie napisałem w 2009 roku, jest nieaktualna. Zobacz odpowiedź Davida Storeya na lepsze rozwiązanie.
źródło
new Date()
powrót,Tue Sep 06 2011 20:02:25 GMT+0200 (CEST)
co wyraźnie oznacza, że obiekt Date ma już wszystkie te wewnętrznie zdefiniowane (nazwy dni miesiąca i tygodnia), nie jest publiczny, więc musimy to wszystko wpisać ponownie. :(String#split
ztoString
lubtoDateString
.Teraz można to zrobić za pomocą interfejsu API internacjonalizacji ECMAScript:
'long'
używa pełnej nazwy miesiąca,'short'
skrótu i'narrow'
bardziej minimalnej wersji, takiej jak pierwsza litera w językach alfabetycznych.Możesz zmienić ustawienia regionalne z przeglądarki na
'default'
dowolne (np.'en-us'
), A użyje ono właściwej nazwy dla tego języka / kraju.Za pomocą
toLocaleString
interfejsu API musisz za każdym razem podawać ustawienia regionalne i opcje. Jeśli zamierzasz korzystać z tych samych informacji regionalnych i opcji formatowania w wielu różnych datach, możeszIntl.DateTimeFormat
zamiast tego użyć :Aby uzyskać więcej informacji, zobacz mój post na blogu dotyczący interfejsu API internacjonalizacji .
źródło
Oto kolejny, z obsługą lokalizacji :)
możesz łatwo dodać obsługę innych języków:
źródło
Date.locale
jestundefined
. jest to jednak doskonała odpowiedź na inne implementacje JS!Jeśli nie masz nic przeciwko rozszerzeniu prototypu Data (i istnieją dobre powody, aby tego nie chcieć), możesz naprawdę wymyślić bardzo łatwą metodę:
Funkcje te zostaną następnie zastosowane do wszystkich obiektów Date javascript.
źródło
Polecam serdecznie
format
funkcję z biblioteki moment.js , której można użyć w następujący sposób:Użyj „MMMM” zamiast „MMM”, jeśli potrzebujesz pełnej nazwy miesiąca
Oprócz długiej listy innych funkcji, ma silne wsparcie dla internacjonalizacji .
źródło
Luxon
idate-fns
, ale potem znowu, istnieje szerokie poparcie dla umiędzynarodowienia przeglądarka API w dzisiejszych czasach .Może być używany jako
źródło
Dzięki temu można wykonać niektóre typowe proste procesy od daty.
Lub możesz zrobić prototyp daty
Dawny:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
źródło
Można użyć datejs to zrobić. Sprawdź Specyfikatory formatu , MMMM podaje nazwę miesiąca:
I lokalizacje danych zostały zlokalizowane dla ponad 150 lokalizacji! Spójrz tutaj
źródło
Próbować:
źródło
Oto sposób, który nie zależy od tablicy zakodowanej na stałe i obsługuje wiele ustawień narodowych.
Jeśli potrzebujesz całej tablicy:
Stosowanie:
Jeśli potrzebujesz tylko wybranego miesiąca (szybciej):
Stosowanie:
Przetestowane i działa dobrze w Chrome i IE 11. Na mozilli potrzebne są pewne modyfikacje, ponieważ zwraca całą datę.
źródło
toLocaleString
Niestety najlepszym sposobem na wyodrębnienie nazwy miesiąca jest reprezentacja UTCString:
źródło
Zamiast deklarować tablicę, która zawiera całą nazwę miesiąca, a następnie wskazuje indeks, możemy również napisać ją w krótszej wersji, jak poniżej:
źródło
MAY 1, 2015 AT 12:00:00 AM GMT-4
(przy użyciu{ month: "long" }
parametrów)new Date().toLocaleString(navigator.language, { month: "short" })
źródło
Naturalnym formatem w tych dniach jest użycie Moment.js.
Sposób, aby uzyskać miesiąc w formacie ciągu, jest bardzo prosty w Moment.js, nie trzeba sztywno kodować nazw miesięcy w kodzie: Aby uzyskać bieżący miesiąc i rok w formacie nazwy miesiąca i cały rok (maj 2015):
źródło
Luxon
idate-fns
, ale potem znowu, istnieje szerokie poparcie dla umiędzynarodowienia przeglądarka API w dzisiejszych czasach .Inny sposób formatowania daty
źródło
Możesz użyć jednego z kilku dostępnych formatów daty. Ponieważ jest to zgodne ze specyfikacją JavaScript, będzie dostępne zarówno w trybie przeglądarki, jak i po stronie serwera.
na przykład
Więcej na https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
źródło
Jeśli nie chcesz korzystać z zewnętrznej biblioteki lub przechowywać tablicy nazw miesięcy, lub jeśli interfejs API internacjonalizacji ECMAScript nie jest wystarczająco dobry z powodu kompatybilności z przeglądarką, zawsze możesz to zrobić w staromodny sposób, wyodrębniając informacje z wyjście daty:
Dałoby to skróconą nazwę miesiąca, np. Październik. Wierzę, że data nadejdzie we wszystkich formatach w zależności od inicjalizacji i ustawień regionalnych, więc spójrz na to, co
toDateString()
zwraca, i ponownie obliczsubstring()
wartości na tej podstawie.źródło
Jeśli używasz jQuery, prawdopodobnie używasz również jQuery UI, co oznacza, że możesz użyć $ .datepicker.formatDate () .
źródło
Moje najlepsze rozwiązanie jest następujące:
źródło
W chwili , po prostu użyj zapisu formatu .
źródło
moment
jest to bardzo duża biblioteka i jest do tego zbyt przesadna. Nowoczesne alternatywy obejmująLuxon
idate-fns
, ale potem znowu, istnieje szerokie poparcie dla umiędzynarodowienia przeglądarka API w dzisiejszych czasach .Można to również zrobić, jeśli używasz kendo.
Oto lista formatów ze strony kendo :
źródło
Możesz po prostu użyć Date.toLocaleDateString () i przeanalizować żądaną datę jako parametr
Więcej informacji można znaleźć w dokumentacji Firefoksa
źródło
Jeśli nie chcesz użyć chwili i chcesz wyświetlić nazwę miesiąca -
źródło
Dla mnie to najlepsze rozwiązanie to
również dla TypeScript
Dane wyjściowe to
źródło
Przechowuj nazwy w tablicy i wyszukaj według indeksu miesiąca.
JavaScript getMonth () Metoda
źródło
var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
? Znacznie krócej niż dodawanie ich pojedynczo ...Mam częściowe rozwiązanie, które wymyśliłem. Do wyodrębnienia nazwy miesiąca i dnia używa wyrażenia regularnego. Ale kiedy przeglądam opcje Region i język (Windows), zdaję sobie sprawę, że różne kultury mają różną kolejność formatów ... może lepszy może być lepszy wzorzec wyrażeń regularnych.
źródło
Po prostu rozszerzając wiele innych doskonałych odpowiedzi - jeśli używasz jQuery - możesz po prostu zrobić coś takiego
gdzie
date
jest równevar d = new Date(somevalue)
. Główną zaletą tego jest to, że per @nickf powiedział o unikaniu globalnej przestrzeni nazw.źródło
Aby uzyskać tablicę nazw miesięcy:
http://jsfiddle.net/polinux/qb346/
źródło
Wystarczy napisać proste opakowanie
toLocaleString
:źródło
Szybki hack, którego użyłem, który działa dobrze:
źródło