Mendapatkan String dalam format YYYYMMDD dari JS tanggal obyek?
I'm mencoba untuk menggunakan JS untuk mengubah sebuah objek tanggal
menjadi string di YYYYMMDD
format. Apakah ada cara yang lebih mudah dari concatenating Tanggal.getYear()
, Tanggal.getMonth()
, dan Tanggal.getDay()
?
363
43
Diubah potongan kode yang sering saya gunakan:
Aku't seperti menambahkan untuk prototipe. Alternatif akan sama:
Anda dapat menggunakan
toISOString
fungsi :Ini akan memberikan anda sebuah "yyyy-mm-dd" format.
Moment.js bisa menjadi teman anda
Jika anda don't perlu JS murni solusi, anda bisa menggunakan jQuery UI untuk melakukan pekerjaan seperti ini :
Biasanya saya don't ingin mengimpor terlalu banyak perpustakaan. Tapi jQuery UI adalah sangat berguna, anda mungkin akan menggunakannya di tempat lain dalam proyek anda.
Kunjungi http://api.jqueryui.com/datepicker/ untuk lebih banyak contoh
Ini adalah satu baris kode yang dapat anda gunakan untuk membuat
YYYY-MM-DD
string dari hari ini's upload.Selain o-o's jawaban saya'd ingin merekomendasikan memisahkan operasi logika dari kembali dan menempatkan mereka sebagai ternaries dalam variabel-variabel sebagai gantinya.
Juga, gunakan
concat()
untuk memastikan aman rangkaian dari variabel-variabelSedikit lebih KERING biola seperti yang disarankan oleh RiZKiT
https://jsfiddle.net/EricHerlitz/tuhhfxz9/
Saya don't seperti memodifikasi asli benda-benda, dan saya pikir perkalian jelas dari string padding solusi diterima.
Biola: http://jsfiddle.net/gbdarren/Ew7Y4/
Polos JS (ES5) solusi tanpa ada mungkin saat melompat isu-isu yang disebabkan oleh Tanggal.toISOString() cetak dalam UTC:
Ini respon ke @weberste's mengomentari @Pierre Guilbert's jawaban.
konsol.log(dateFormated);
Cara lain adalah dengan menggunakan
toLocaleDateString
dengan lokal yang memiliki big-endian format tanggal standar, seperti Swedia, Lithuania, Hungaria, Korea Selatan, ...:Untuk menghapus pembatas (
-
) adalah hanya masalah mengganti non-digit:Ini tidak memiliki potensi kesalahan yang bisa anda dapatkan dengan UTC tanggal format: UTC tanggal yang mungkin menjadi salah satu hari dibandingkan dengan saat ini di zona waktu lokal.
Anda hanya dapat menggunakan satu baris kode untuk mendapatkan date di tahun
Kode ini adalah untuk memperbaiki Pierre Guilbert's jawaban:
(ini bekerja bahkan setelah 10000 tahun)
Sedikit versi yang disederhanakan untuk jawaban yang paling populer di thread ini https://stackoverflow.com/a/3067896/5437379 :
Orang ini di sini => http://blog.stevenlevithan.com/archives/date-time-format menulis
format()
fungsi untuk Javascript'sTanggal
objek, sehingga dapat digunakan dengan akrab literal format.Jika anda membutuhkan fitur penuh format Tanggal dalam aplikasi anda's Javascript, gunakan itu. Sebaliknya jika apa yang ingin anda lakukan adalah salah satu off, kemudian menggabungkan getYear(), getMonth(), getDay() mungkin adalah yang paling mudah.
Tampaknya bahwa mootools menyediakan
Date().format()
: https://mootools.net/more/docs/1.6.0/Types/DateI'm tidak yakin jika ini layak termasuk hanya untuk tugas khusus ini meskipun.
Bekerja dari @o-o's jawaban ini akan memberikan anda kembali string tanggal sesuai dengan format string. Anda dapat dengan mudah menambahkan 2 digit tahun regex untuk tahun & milidetik dan seperti jika anda membutuhkan mereka.
Saya don't tahu bagaimana efisien yang demikian, terutama perf bijaksana karena itu banyak yang menggunakan regex. Itu mungkin bisa menggunakan beberapa pekerjaan yang saya lakukan tidak master js murni.
Saya biasanya menggunakan kode di bawah ini ketika aku harus melakukan ini.
Untuk menjelaskan, .slice(-2) memberi kita dua karakter dari string.
Jadi tidak peduli apa, kita dapat menambahkan "0" untuk hari atau bulan, dan hanya meminta dua terakhir karena mereka selalu dua yang kita inginkan.
Jadi jika MyDate.getMonth() mengembalikan 9, itu akan menjadi:
jadi menambahkan .slice(-2) pada yang memberi kita dua karakter yaitu:
Tapi jika saat ini.getMonth() mengembalikan 10, itu akan menjadi:
jadi menambahkan .slice(-2) memberi kita dua karakter, atau: