saya mencoba untuk mengubah string dalam format dd-mm-yyyy menjadi objek tanggal dalam JavaScript menggunakan yang berikut ini:
var from = $("#datepicker").val();
var to = $("#datepickertwo").val();
var f = new Date(from);
var t = new Date(to);
("#datepicker").val()
berisi tanggal dalam format hh-bb-tttt. Ketika saya melakukan hal berikut, saya mendapatkan "Tanggal Tidak Valid":
alert(f);
Apakah ini karena simbol '-'? Bagaimana saya bisa mengatasi ini?
javascript
date
pengguna559142
sumber
sumber
Jawaban:
Pisahkan pada "-"
Pisahkan string ke bagian yang Anda butuhkan:
Gunakan regex
Mengapa tidak menggunakan regex?
Karena Anda tahu Anda akan mengerjakan string yang terdiri dari tiga bagian, dipisahkan oleh tanda hubung.
Namun, jika Anda mencari string yang sama di dalam string lain, regex akan menjadi cara untuk melakukannya.
Penggunaan kembali
Karena Anda melakukan ini lebih dari sekali dalam kode sampel Anda, dan mungkin di tempat lain dalam basis kode Anda, bungkus dalam sebuah fungsi:
Menggunakan sebagai:
Atau jika Anda tidak keberatan jQuery dalam fungsi Anda:
Menggunakan sebagai:
JavaScript modern
Jika Anda dapat menggunakan JS yang lebih modern, perusakan array juga merupakan sentuhan yang bagus:
sumber
contoh ekspresi reguler:
sumber
/
adalah pembatas dan satu tahun terbuat dari 2 digit (atau jumlah yang lebih besar dari 1):replace( /(\d{2})[-/](\d{2})[-/](\d+)/, "$2/$1/$3")
new Date( "23. 2. 15".replace( /(\d+)[^d]+(\d+)[^d]+(\d+)/, "$2/$1/$3") );
en.wikipedia.org/wiki/Date_format_by_countryKemungkinan lain:
Sesuaikan angka dan atur ulang angka-angka itu
sumber
var date = new Date(numbers[2], numbers[1]-1, numbers[0]);
Menggunakan contoh moment.js :
sumber
sumber
$.datepicker.parseDate("dd-mm-yy", from);
untuk menguraikan dengan benar tanggal seperti24-01-2017
, chek dokumentasi datepicker di api.jqueryui.com/datepickerAnda juga dapat menulis tanggal di dalam tanda kurung
Date()
objek, seperti ini:sumber
Gunakan format ini:
myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00
sumber
parseDate
fungsi itu? Apakah itu fungsi javascript asli?'2011-01-03'
dan waktu UTC ke00:00:00
. Jadi jika zona waktu pengguna kurang dari UTC, itu sebenarnya akan menjadi sehari sebelumnya.Dalam kasus saya
Hasil: Sen Nov 02 2015 04:40:13 GMT + 0100 (CET) maka saya menggunakan .getTime () untuk bekerja dengan milidetik
sumber
Jawaban yang diterima agak memiliki bug
Pertimbangkan apakah datepicker berisi "77-78-7980" yang jelas bukan tanggal yang valid. Ini akan menghasilkan:
Yang mungkin bukan hasil yang diinginkan.
Alasan untuk ini dijelaskan di situs MDN :
Cara yang lebih baik untuk menyelesaikan masalah adalah:
Ini memberi Anda kemungkinan untuk menangani input yang tidak valid.
Sebagai contoh:
sumber
Anda dapat menggunakan perpustakaan eksternal untuk membantu Anda.
http://www.mattkruse.com/javascript/date/source.html
Lihat juga ini: Mengurai string DateTime dalam JavaScript
sumber
Lihatlah Datejs untuk semua masalah terkait tanggal kecil itu .. Anda juga bisa menyelesaikannya dengan fungsi parseDate
sumber
Anda bisa menggunakan Regexp.
sumber
sesederhana itu, cukup kirimkan tanggal Anda ke js Obyek Tanggal
sumber
new Date('30/12/2018').toLocaleDateString()
?? Itu mengembalikan Tanggal Tidak Valid