Bagaimana saya bisa menghasilkan nama bulan (mis: Oktober / Oktober) dari objek tanggal ini dalam JavaScript?
var objDate = new Date("10/11/2009");
Bagaimana saya bisa menghasilkan nama bulan (mis: Oktober / Oktober) dari objek tanggal ini dalam JavaScript?
var objDate = new Date("10/11/2009");
Jawaban:
Versi lebih pendek:
Catatan (2019-03-08) - Jawaban ini oleh saya yang saya tulis pada tahun 2009 sudah usang. Lihat jawaban David Storey untuk solusi yang lebih baik.
sumber
new Date()
pengembalianTue Sep 06 2011 20:02:25 GMT+0200 (CEST)
yang jelas berarti objek Date sudah memiliki semua yang didefinisikan secara internal ini (nama bulan dan minggu) itu bukan publik, jadi kita harus mengetikkan semuanya lagi. :(String#split
dengantoString
atautoDateString
.Sekarang dimungkinkan untuk melakukan ini dengan API Internasionalisasi ECMAScript:
'long'
menggunakan nama lengkap bulan ini,'short'
untuk nama pendek, dan'narrow'
untuk versi yang lebih minimal, seperti huruf pertama dalam bahasa alfabet.Anda dapat mengubah lokal dari browser
'default'
menjadi apa pun yang Anda suka (mis'en-us'
), dan itu akan menggunakan nama yang tepat untuk bahasa / negara itu.Dengan
toLocaleString
api Anda harus lulus di lokasi dan opsi setiap kali. Jika Anda akan menggunakan info lokal dan opsi pemformatan yang sama pada beberapa tanggal yang berbeda, Anda bisa menggunakanIntl.DateTimeFormat
:Untuk informasi lebih lanjut lihat posting blog saya di API Internasionalisasi .
sumber
Inilah yang lain, dengan dukungan untuk pelokalan :)
Anda kemudian dapat dengan mudah menambahkan dukungan untuk bahasa lain:
sumber
Date.locale
adanyaundefined
. itu adalah jawaban yang sangat baik untuk implementasi JS lainnya!Jika Anda tidak keberatan memperpanjang prototipe Tanggal (dan ada beberapa alasan bagus untuk tidak mau melakukan ini), Anda sebenarnya dapat membuat metode yang sangat mudah:
Fungsi-fungsi ini kemudian akan berlaku untuk semua objek Tanggal javascript.
sumber
Saya sungguh-sungguh merekomendasikan
format
fungsi dari, perpustakaan moment.js , yang dapat Anda gunakan seperti ini:Gunakan "MMMM" sebagai ganti "MMM" jika Anda membutuhkan nama lengkap bulan ini
Selain daftar panjang fitur lainnya, ia memiliki dukungan kuat untuk internasionalisasi .
sumber
Luxon
dandate-fns
, tetapi sekali lagi, ada dukungan browser yang luas untuk API Internasionalisasi saat ini .Dapat digunakan sebagai
sumber
Beberapa proses mudah yang umum dari objek tanggal dapat dilakukan dengan ini.
Atau Anda dapat membuat prototipe tanggal seperti
Ex:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
sumber
Anda mungkin menggunakan datejs untuk melakukan itu. Periksa FormatSpecifiers , MMMM memberi Anda nama bulan:
Dan datej mendapatkan bahwa dilokalkan untuk lebih dari 150 lokal! Lihat disini
sumber
Mencoba:
sumber
Berikut cara yang tidak bergantung pada larik kode keras dan mendukung banyak lokal.
Jika Anda membutuhkan seluruh array:
Pemakaian:
Jika Anda hanya membutuhkan bulan yang dipilih (lebih cepat):
Pemakaian:
Diuji dan berfungsi baik di Chrome dan IE 11. Pada mozilla diperlukan beberapa modifikasi, karena ia mengembalikan seluruh tanggal.
sumber
toLocaleString
Sayangnya cara terbaik untuk mengekstrak nama bulan adalah dari perwakilan UTCString:
sumber
Alih-alih mendeklarasikan array yang menyimpan semua nama bulan dan kemudian menunjuk dengan indeks, kita juga dapat menulisnya dalam versi yang lebih pendek seperti di bawah ini:
sumber
MAY 1, 2015 AT 12:00:00 AM GMT-4
(saat menggunakan{ month: "long" }
parameter)new Date().toLocaleString(navigator.language, { month: "short" })
sumber
Format alami hari ini adalah menggunakan Moment.js.
Cara mendapatkan bulan dalam format string, sangat sederhana di Moment.js tidak perlu menyulitkan nama bulan dalam kode Anda: Untuk mendapatkan bulan dan tahun saat ini dalam format nama bulan dan tahun penuh (Mei 2015):
sumber
Luxon
dandate-fns
, tetapi sekali lagi, ada dukungan browser yang luas untuk API Internasionalisasi saat ini .Cara lain untuk memformat tanggal
sumber
Anda dapat menggunakan salah satu dari beberapa pemformat Tanggal yang tersedia. Karena ini termasuk dalam spesifikasi JavaScript, ini akan tersedia dalam mode sisi browser dan server.
misalnya
Ada lebih banyak di https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
sumber
Jika Anda tidak ingin menggunakan perpustakaan eksternal, atau menyimpan array nama bulan, atau jika API Internasionalisasi ECMAScript tidak cukup baik karena kompatibilitas browser Anda selalu dapat melakukannya dengan cara lama dengan mengekstraksi info dari tanggal keluaran:
Ini akan memberi Anda nama bulan yang disingkat, misalnya Oktober. Saya percaya tanggal akan datang dalam semua jenis format tergantung pada inisialisasi dan lokal Anda jadi lihat apa yang
toDateString()
mengembalikan dan menghitung ulangsubstring()
nilai - nilai Anda berdasarkan itu.sumber
Jika Anda menggunakan jQuery, Anda mungkin juga menggunakan jQuery UI, yang berarti Anda dapat menggunakan $ .datepicker.formatDate () .
sumber
Solusi Terbaik saya adalah sebagai berikut:
sumber
Dengan momentjs , cukup gunakan notasi format .
sumber
moment
adalah perpustakaan yang sangat besar, dan cara yang berlebihan untuk ini. Alternatif modern termasukLuxon
dandate-fns
, tetapi sekali lagi, ada dukungan browser yang luas untuk API Internasionalisasi saat ini .Ini juga bisa dilakukan jika Anda menggunakan kendo.
Berikut daftar pemformat dari situs kendo :
sumber
Anda cukup menggunakan Date.toLocaleDateString () dan menguraikan tanggal yang diinginkan sebagai parameter
Anda dapat menemukan informasi lebih lanjut di dokumentasi Firefox
sumber
Jika Anda tidak ingin menggunakan momen dan ingin menampilkan nama bulan -
sumber
Bagi saya ini adalah solusi terbaik adalah,
untuk TypeScript juga
Output adalah
sumber
Simpan nama dalam array dan cari berdasarkan indeks bulan ini.
Metode JavaScript getMonth ()
sumber
var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
? Jauh lebih pendek daripada menambahkannya satu per satu ...Saya punya solusi parsial yang saya temukan. Ini menggunakan ekspresi reguler untuk mengekstrak nama bulan dan hari. Tetapi ketika saya melihat opsi Wilayah dan Bahasa (Windows) saya menyadari bahwa budaya yang berbeda memiliki urutan format yang berbeda ... mungkin pola ekspresi reguler yang lebih baik dapat berguna.
sumber
Hanya memperluas pada banyak jawaban bagus lainnya - jika Anda menggunakan jQuery - Anda bisa melakukan sesuatu seperti
dimana
date
sama denganvar d = new Date(somevalue)
. Keuntungan utama dari ini adalah per @nickf mengatakan tentang menghindari namespace global.sumber
Untuk mendapatkan berbagai nama bulan:
http://jsfiddle.net/polinux/qb346/
sumber
Cukup tulis pembungkus sederhana di sekitar
toLocaleString
:sumber
Retas cepat yang saya gunakan yang berfungsi dengan baik:
sumber