Saya telah membuat skrip ini untuk menghitung tanggal 10 hari sebelumnya dalam format dd / mm / yyyy:
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
Saya perlu tanggal muncul dengan nol terkemuka pada komponen hari dan bulan dengan cara menambahkan aturan ini ke skrip. Sepertinya saya tidak bisa membuatnya bekerja.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
dan
if (MyDate.getDate <10)get.Date = '0' + getDate;
Jika seseorang bisa menunjukkan di mana saya harus memasukkan ini ke dalam skrip saya akan sangat menghargai
javascript
date
date-format
time-format
leading-zero
Julian Coates
sumber
sumber
Jawaban:
Coba ini: http://jsfiddle.net/xA5B7/
EDIT:
Untuk menjelaskan,
.slice(-2)
beri kami dua karakter terakhir dari string.Jadi, apa pun yang terjadi, kita dapat menambahkan
"0"
hari atau bulan, dan hanya meminta dua terakhir karena mereka selalu dua yang kita inginkan.Jadi jika
MyDate.getMonth()
pengembaliannya9
adalah:jadi menambahkan
.slice(-2)
itu memberi kita dua karakter terakhir yaitu:Tetapi jika
MyDate.getMonth()
kembali10
, itu akan menjadi:jadi menambahkan
.slice(-2)
memberi kita dua karakter terakhir, atau:sumber
MyDate.setDate(MyDate.getDate() + 20);
slice()
teknik dalam jawaban yang diterima adalah sekitar 1/10 detik lebih cepat daripad()
pada teknik @Aleross pada 1 juta iterasi. jsFiddle . "bayar uangmu, pilih sendiri".Berikut adalah contoh dari dokumen objek Date di Mozilla Developer Network menggunakan fungsi "pad" kustom, tanpa harus memperpanjang prototipe Number Javascript. Fungsi praktis yang mereka berikan sebagai contoh adalah
Dan di bawah ini digunakan dalam konteks.
sumber
pad
apakah hanya menghasilkan string.Cara modern baru untuk melakukan ini adalah dengan menggunakan
toLocaleDateString
, karena itu tidak hanya memungkinkan Anda untuk memformat tanggal dengan lokalisasi yang tepat, Anda bahkan dapat melewati opsi format untuk mengarsipkan hasil yang diinginkan:Saat Anda melewatkan argumen pertama, itu akan mendeteksi bahasa browser. Atau, Anda dapat menggunakan
2-digit
opsi tahun juga.Jika Anda tidak perlu mendukung browser lama seperti IE10, ini adalah cara paling bersih untuk melakukan pekerjaan itu. IE10 dan versi yang lebih rendah tidak akan mengerti argumen opsi.
Catatan: Selain itu, ada juga
toLocaleTimeString
, jika Anda ingin melokalkan atau memformat waktu kencan.sumber
Anda dapat mendefinisikan fungsi "str_pad" (seperti dalam php):
sumber
Untuk Anda orang-orang dari masa depan (ECMAScript 2017 dan seterusnya)
Larutan
Penjelasan
yang
String.prototype.padStart(targetLength[, padString])
menambahkan sebanyak mungkinpadString
dalamString.prototype
target sehingga panjang baru targettargetLength
.Contoh
sumber
.padStart(2, '0')
karena parameter kedua adalah string, meskipun mungkin tidak masalah kecuali jika Anda menggunakan TypeScript//digunakan:
sumber
Saya menemukan cara pintas untuk melakukan ini:
akan menambahkan nol di depan ke semua digit tunggal yang sepi
sumber
sumber
Anda dapat menggunakan operator ternary untuk memformat tanggal seperti pernyataan "jika".
Sebagai contoh:
Begitu
akan mirip dengan pernyataan if, di mana jika getDate () mengembalikan nilai kurang dari 10, maka kembalikan '0' + Tanggal, atau kembalikan tanggal jika lebih besar dari 10 (karena kita tidak perlu menambahkan yang memimpin 0). Sama untuk bulan ini.
Sunting: Lupa bahwa getMonth dimulai dengan 0, jadi tambahkan +1 ke akun untuk itu. Tentu saja Anda juga bisa mengatakan d.getMonth () <9:, tapi saya pikir menggunakan +1 akan membantu membuatnya lebih mudah untuk dipahami.
sumber
Ada pendekatan lain untuk mengatasi masalah ini, menggunakan
slice
JavaScript.yang
datestring
tanggal kembali dengan format yang seperti yang Anda harapkan: 2019/09/01pendekatan lain menggunakan
dateformat
pustaka: https://github.com/felixge/node-dateformatsumber
Jadikan hidup Anda lebih mudah dan gunakan Moment.js beberapa kode contoh:
sumber
sumber
Anda dapat memberikan opsi sebagai parameter untuk memformat tanggal. Parameter pertama untuk lokal yang mungkin tidak Anda perlukan dan yang kedua untuk opsi. Untuk informasi lebih lanjut, kunjungi https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
sumber
Saya membungkus jawaban yang benar dari pertanyaan ini dalam suatu fungsi yang dapat menambahkan beberapa nol di awal tetapi secara default menambahkan 1 nol.
untuk bekerja dengan angka saja dan tidak lebih dari 2 digit, ini juga merupakan pendekatan:
sumber
Pilihan lain, menggunakan fungsi bawaan untuk melakukan padding (tetapi menghasilkan kode yang cukup panjang!):
Dan lainnya, memanipulasi string dengan ekspresi reguler:
Tetapi ketahuilah bahwa seseorang akan menunjukkan tahun di awal dan hari di akhir .
sumber
Menambahkan ke jawaban @modiX, inilah yang berfungsi ... JANGAN TINGGALKAN yang kosong
sumber
Berikut adalah contoh yang sangat sederhana bagaimana Anda dapat menangani situasi ini.
sumber
Berikut ini bertujuan untuk mengekstrak konfigurasi, menghubungkan ke
Date.protoype
dan menerapkan konfigurasi.Saya telah menggunakan
Array
untuk menyimpan potongan waktu dan ketika sayapush()
this
sebagaiDate
objek, itu mengembalikan saya panjang untuk beralih. Ketika saya selesai, saya dapat menggunakanjoin
padareturn
nilai.Ini tampaknya bekerja sangat cepat: 0,016 ms
demo: http://jsfiddle.net/tive/U4MZ3/
sumber
Apa yang akan saya lakukan, adalah membuat pembantu Tanggal kustom saya sendiri yang terlihat seperti ini:
(Lihat juga Fiddle ini )
sumber
Tambahkan beberapa padding untuk memungkinkan nol di depan - di mana diperlukan - dan menggabungkan menggunakan pembatas pilihan Anda sebagai string.
sumber
Seperti yang disarankan @John Henckel, mulai menggunakan metode toISOString () membuat segalanya lebih mudah
sumber
sumber
coba ini untuk fungsi dasar, tidak ada perpustakaan yang diperlukan
sumber
sumber
Anda bisa menggunakan String.slice () yang mengekstraksi bagian string dan mengembalikannya sebagai string baru, tanpa mengubah string asli:
Atau Anda juga dapat menggunakan lib seperti Moment.js untuk memformat tanggal:
sumber