Jenis input HTML5 sangat bagus, pemilih tanggal bawaan baru Opera sangat mudah, dan Chrome setidaknya telah mendukung jenis masukan baru dengan implementasi roda putar.
Tetapi apakah ada cara untuk menetapkan nilai default bidang tanggal ke tanggal hari ini? Dengan Opera, saya dapat memilih 'Hari Ini' dari pemilih tanggal, dan segera setelah saya mengklik salah satu tombol langkah di Chrome, itu menambah / mengurangi dari tanggal hari ini.
Saya tidak malu untuk memberi kode solusi untuk masalah kecil ini, tetapi tampaknya konyol bagi saya bahwa kedua browser sepenuhnya menyadari tanggal saat ini tetapi tidak secara otomatis hanya memasukkannya (setidaknya sebagai pengganti).
Jawaban:
Seperti bidang input HTML apa pun, browser akan membiarkannya kosong kecuali jika nilai default ditentukan dengan
value
atribut.Sayangnya HTML5 tidak menyediakan cara untuk menentukan 'hari ini' dalam
value
atribut (yang dapat saya lihat), hanya tanggal RFC3339 yang valid seperti2011-09-29
.TL; DR Gunakan
YYYY-MM-DD
format tanggal atau tidak akan ditampilkansumber
DateTime.now.strftime("%Y-%m-%d")
date('Y-m-d')
seperti itu membutuhkan nol terkemuka?myDate.toLocaleDateString('en-CA')
lakukan trikObjek Tanggal JavaScript menyediakan dukungan bawaan yang cukup untuk format yang diperlukan untuk menghindari melakukannya secara manual:
Tambahkan ini untuk dukungan zona waktu yang benar:
jQuery:
JS murni:
sumber
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
(karena jawaban itu akhirnya) pertama, kemudianvalueAsDate
(yang meninggalkan IE, Firefox, mungkin Safari, pada dasarnya semuanya kecuali Chrome, Opera, Edge, dan beberapa browser seluler). Semuanya mendukungvalue
properti yang digunakan oleh solusi saya, bahkan ketika input tanggal kembali ke input teks di browser yang tidak mendukung, solusi lainnya akan kesalahan atau gagal.input[type=datetime-local]
dan mengubahnya keslice(0,19)
HTHini bekerja untuk saya:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
sumber
valueAsDate
. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdatevalueAsDate
kenew Date()
, nilai bidang akan ditetapkan ke 2018-03-28. Lihat austinfrance.wordpress.com/2012/07/09/...Kode berikut berfungsi dengan baik:
Perhatikan bahwa ini bergantung pada PHP.
sumber
<?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>
ke<?php echo date('Y-m-d'); ?>
Anda dapat mengisi nilai default melalui javascript seperti yang terlihat di sini: http://jsfiddle.net/7LXPq/
Saya mungkin akan memberikan sedikit waktu ekstra untuk melihat apakah bulan dan tanggal adalah satu digit dan awali dengan nol ekstra ... tetapi ini akan memberi Anda ide.
EDIT: Menambahkan cek untuk tambahan nol
sumber
Ikuti format Ymd standar, jika Anda menggunakan PHP
sumber
HTML
JS
demo
Jika Anda tidak ingin menggunakan jQuery, Anda dapat melakukan sesuatu seperti ini
HTML
JS
demo
sumber
Dalam HTML5, tidak ada cara untuk menetapkan nilai default bidang tanggal ke tanggal hari ini? Seperti yang ditunjukkan dalam jawaban lain, nilainya dapat diatur menggunakan JavaScript, dan ini biasanya merupakan pendekatan terbaik jika Anda ingin mengatur default sesuai dengan tanggal saat ini kepada pengguna saat halaman dimuat.
HTML5 mendefinisikan
valueAsDate
properti untukinput type=date
elemen, dan menggunakannya, Anda bisa mengatur nilai awal langsung dari objek yang dibuat misalnya olehnew Date()
. Namun, misalnya IE 10 tidak tahu properti itu. (Ini juga tidak memiliki dukungan asli untukinput type=date
, tapi itu masalah yang berbeda.)Jadi dalam praktiknya Anda perlu mengatur
value
properti, dan harus dalam notasi konforman ISO 8601. Saat ini hal ini dapat dilakukan dengan lebih mudah, karena kita dapat mengharapkan browser yang digunakan saat ini untuk mendukungtoISOString
metode ini:sumber
= new Date().toISOString().split('T')[0];
Jika Anda melakukan sesuatu yang berkaitan dengan tanggal dan waktu di browser, Anda ingin menggunakan Moment.js :
moment()
mengembalikan objek yang mewakili tanggal dan waktu saat ini. Anda kemudian memanggil.format()
metodenya untuk mendapatkan representasi string sesuai dengan format yang ditentukan. Dalam hal iniYYYY-MM-DD
,.Contoh lengkap:
sumber
gunakan moment.js untuk menyelesaikan masalah ini dalam 2 baris, tipe input tanggal html5 hanya menerima "YYYY-MM-DD" format ini. Saya memecahkan masalah saya dengan cara ini.
ini adalah cara paling sederhana untuk menyelesaikan masalah ini.
sumber
Javascript
Jquery
Pilihan lain
Jika Anda ingin menyesuaikan tanggal, bulan dan tahun, lakukan saja jumlah atau sub sesuai keinginan Anda 😎 Untuk bulan dimulai dari 0, itulah mengapa perlu menjumlahkan 1 dengan bulan.
Appy fungsi hari ini
sumber
Sangat Sederhana, Cukup gunakan bahasa sisi server seperti PHP, ASP, JAVA atau bahkan Anda dapat menggunakan javascript.
Ini solusinya
sumber
sumber
jika Anda perlu mengisi input datetime, Anda dapat menggunakan ini:
sumber
Untuk NodeJS (Ekspres dengan templat SWIG):
sumber
Solusi paling sederhana tampaknya mengabaikan waktu UTC yang akan digunakan, termasuk yang sangat terpilih. Di bawah ini adalah versi sederhana, ES6, non-jQuery dari beberapa jawaban yang ada:
sumber
value
atauvalueAsDate
? Terlihat bagus.Inilah yang saya lakukan dalam kode saya, saya baru saja menguji dan itu bekerja dengan baik, tipe input = "date" tidak mendukung untuk mengatur curdate secara otomatis, jadi cara saya mengatasi keterbatasan ini adalah menggunakan kode PHP kode sederhana seperti ini .
Semoga ini bisa membantu!
sumber
Kedua jawaban teratas itu salah.
Lapisan pendek yang menggunakan JavaScript murni, menyumbang zona waktu lokal dan tidak memerlukan fungsi tambahan untuk didefinisikan:
Ini mendapatkan datetime saat ini dalam milidetik (sejak zaman) dan menerapkan zona waktu offset dalam milidetik (menit * 60k menit per milidetik).
Anda dapat mengatur tanggal menggunakan
element.valueAsDate
tetapi kemudian Anda memiliki panggilan tambahan keDate()
konstruktor.sumber
Ini adalah sesuatu yang benar-benar perlu Anda lakukan di sisi server karena format waktu lokal masing-masing pengguna berbeda, belum lagi setiap browser berperilaku berbeda.
Nilai input Tanggal Html harus dalam format ini: yyyy-mm-dd jika tidak maka tidak akan menampilkan nilai.
Output tanggal hari ini: 2019-02-08
Kemudian di html Anda:
<input type="date" value="<% =get_date %>"
gunakan saja ini:
<input type="date" value="<?= date("Y-m-d"); ?>">
sumber
Ini sangat sederhana dengan menerapkan kode berikut, Menggunakan
PHP
Fungsi tanggal akan mengembalikan tanggal saat ini, dengan mencatat tanggal di
time()
.sumber
oleh Javascript:
sumber
sumber
Jika Anda menggunakan ruby, Anda dapat menggunakan ini untuk menetapkan nilai default ke tanggal dan waktu hari ini:
sumber
Solusi sederhana:
sumber
document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Karena tidak ada metode default untuk menetapkan nilai tanggal hari ini, saya akan mengatakan ini harus bergantung pada aplikasi itu. Jika Anda ingin memaksimalkan pemaparan audiens Anda ke pemilih tanggal, maka gunakan skrip sisi server (PHP, ASP, dll.) Untuk menetapkan nilai default.
Namun, jika itu untuk konsol administrasi CMS, dan Anda tahu bahwa pengguna akan selalu memiliki JS di atau situs Anda tepercaya, maka Anda dapat menggunakan JS dengan aman untuk mengisi nilai default, sesuai jlbruno.
sumber
Saya memiliki masalah yang sama dan saya memperbaikinya dengan JS sederhana. Input:
JS
Penting: skrip JS harus berada di baris kode terakhir, atau setelah dimasukkan, karena jika Anda memasukkan kode ini sebelumnya, skrip tidak akan menemukan input Anda.
sumber
Tidak ada metode standar dalam HTML itu sendiri untuk memasukkan tanggal hari ini ke dalam bidang input. Namun, seperti bidang input lainnya, ia akan menerima nilai.
Anda bisa menggunakan PHP untuk mengambil tanggal hari ini dan memasukkannya ke dalam bidang nilai elemen formulir.
Bidang nilai menerima format YYYY-MM-DD sebagai input sehingga cukup dengan membuat variabel
$date_string
dalam format yang sama dengan nilai input yang diterima dan mengisinya dengan tahun, bulan dan hari yang diambil dari tanggal hari ini dan nol! Anda memiliki tanggal pemilihan sendiri!Semoga ini membantu :)
Edit:
Jika Anda ingin membuat field input bersarang dalam HTML daripada PHP, Anda bisa melakukan hal berikut.
Saya menyadari pertanyaan ini ditanyakan beberapa waktu yang lalu (2 tahun yang lalu) tetapi masih butuh beberapa saat untuk menemukan jawaban yang pasti di internet, jadi ini berlaku untuk siapa saja yang mencari jawabannya kapan pun mungkin dan berharap itu sangat membantu semua orang :)
Edit Lainnya:
Hampir lupa, sesuatu yang telah menjadi masalah besar bagi saya di masa lalu selalu lupa untuk mengatur zona waktu default setiap kali membuat skrip dalam PHP yang menggunakan fungsi date ().
Sintaksnya adalah
date_default_timezone_set(...);
. Dokumentasi dapat ditemukan di sini di PHP.net dan daftar zona waktu yang didukung untuk disisipkan ke dalam fungsi dapat ditemukan di sini . Ini selalu mengganggu karena saya di Australia, semuanya selalu didorong mundur 10 jam jika saya tidak mengatur ini dengan benar karena defaultnya ke UTC + 0000 di mana saya membutuhkan UTC + 1000 jadi berhati-hatilah :)sumber
Terima kasih peter, sekarang saya mengubah kode saya.
sumber
Dan bagi mereka yang menggunakan ASP VBScript
Dan kemudian di dalam tubuh, elemen Anda akan terlihat seperti ini
Bersulang!
sumber
Bahkan setelah sekian lama, itu mungkin membantu seseorang. Ini adalah solusi JS sederhana.
JS
HTML
Solusi serupa berfungsi di Angular tanpa pustaka tambahan untuk mengonversi format tanggal. Untuk Angular (kode disingkat karena kode komponen umum):
sumber