Bagaimana saya bisa mengkonversi string ke objek waktu tanggal dalam javascript dengan menentukan string format?
Saya mencari sesuatu seperti:
var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");
Bagaimana saya bisa mengkonversi string ke objek waktu tanggal dalam javascript dengan menentukan string format?
Saya mencari sesuatu seperti:
var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");
Jawaban:
Saya pikir ini dapat membantu Anda: http://www.mattkruse.com/javascript/date/
Ada getDateFromFormat()
fungsi yang bisa Anda sesuaikan sedikit untuk menyelesaikan masalah Anda.
Pembaruan: ada versi terbaru dari sampel yang tersedia di javascripttoolbox.com
TypeError: Object Date has no method 'getDateFromFormat'
Gunakan jika string Anda kompatibel dengan . Jika format Anda tidak kompatibel (saya pikir itu adalah), Anda harus mengurai string sendiri (harus mudah dengan ekspresi reguler) dan membuat objek Tanggal baru dengan nilai eksplisit untuk tahun, bulan, tanggal, jam, menit dan detik.new Date(dateString)
Date.parse()
@Christoph Menyebutkan menggunakan regex untuk mengatasi masalah tersebut. Inilah yang saya gunakan:
var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString);
var dateObject = new Date(
(+dateArray[1]),
(+dateArray[2])-1, // Careful, month starts at 0!
(+dateArray[3]),
(+dateArray[4]),
(+dateArray[5]),
(+dateArray[6])
);
Ini sama sekali tidak cerdas, cukup mengkonfigurasi regex dan new Date(blah)
sesuai dengan kebutuhan Anda.
Sunting: Mungkin sedikit lebih bisa dipahami dalam ES6 menggunakan penghancuran:
let dateString = "2010-08-09 01:02:03"
, reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
, [, year, month, day, hours, minutes, seconds] = reggie.exec(dateString)
, dateObject = new Date(year, month-1, day, hours, minutes, seconds);
Tetapi dalam semua kejujuran hari ini saya meraih sesuatu seperti Momen
/g
bendera, hanya untuk mengatur lastIndex
ke 0
sesudahnya? Hanya saja, jangan gunakan pertandingan global.
/g
adalah copy / paste ceroboh dari proyek yang ada. lastindex
telah ditambahkan oleh editor (untuk memerangi \g
kurasa?). Saya akan menghapusnya sekarang. Terima kasih telah menunjukkannya.
Tidak ada rutinitas format tanggal / waktu yang canggih di JavaScript.
Anda harus menggunakan perpustakaan eksternal untuk output tanggal yang diformat, "Format Tanggal JavaScript" dari Flagrant Badassery terlihat sangat menjanjikan.
Untuk konversi input, beberapa saran telah dibuat. :)
Lihat Moment.js . Ini adalah perpustakaan modern dan kuat yang menggantikan fungsi Tanggal menyedihkan JavaScript (atau kekurangan fungsi).
Hanya untuk jawaban yang diperbarui di sini, ada js lib yang bagus di http://www.datejs.com/
Datejs adalah pustaka Date JavaScript sumber terbuka untuk parsing, pemformatan, dan pemrosesan.
var temp1 = "";
var temp2 = "";
var str1 = fd;
var str2 = td;
var dt1 = str1.substring(0,2);
var dt2 = str2.substring(0,2);
var mon1 = str1.substring(3,5);
var mon2 = str2.substring(3,5);
var yr1 = str1.substring(6,10);
var yr2 = str2.substring(6,10);
temp1 = mon1 + "/" + dt1 + "/" + yr1;
temp2 = mon2 + "/" + dt2 + "/" + yr2;
var cfd = Date.parse(temp1);
var ctd = Date.parse(temp2);
var date1 = new Date(cfd);
var date2 = new Date(ctd);
if(date1 > date2) {
alert("FROM DATE SHOULD BE MORE THAN TO DATE");
}
Pustaka eksternal adalah kerja keras untuk mengurai satu atau dua tanggal, jadi saya membuat fungsi saya sendiri menggunakan solusi Oli dan Christoph . Di sini, di Eropa Tengah, kami jarang menggunakan aything selain format OP, jadi ini sudah cukup untuk aplikasi sederhana yang digunakan di sini.
function ParseDate(dateString) {
//dd.mm.yyyy, or dd.mm.yy
var dateArr = dateString.split(".");
if (dateArr.length == 1) {
return null; //wrong format
}
//parse time after the year - separated by space
var spacePos = dateArr[2].indexOf(" ");
if(spacePos > 1) {
var timeString = dateArr[2].substr(spacePos + 1);
var timeArr = timeString.split(":");
dateArr[2] = dateArr[2].substr(0, spacePos);
if (timeArr.length == 2) {
//minutes only
return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]));
} else {
//including seconds
return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))
}
} else {
//gotcha at months - January is at 0, not 1 as one would expect
return new Date(parseInt(dateArr[2]), parseInt(dateArr[1] - 1), parseInt(dateArr[0]));
}
}
Date.parse()
cukup cerdas tetapi saya tidak dapat menjamin bahwa format akan diurai dengan benar.
Jika tidak, Anda harus menemukan sesuatu untuk menjembatani keduanya. Contoh Anda cukup sederhana (menjadi angka murni) sehingga sentuhan REGEX (atau bahkan string.split()
- mungkin lebih cepat) dipasangkan dengan beberapaparseInt()
akan memungkinkan Anda untuk dengan cepat membuat kencan.
time = "2017-01-18T17:02:09.000+05:30"
t = new Date(time)
hr = ("0" + t.getHours()).slice(-2);
min = ("0" + t.getMinutes()).slice(-2);
sec = ("0" + t.getSeconds()).slice(-2);
t.getFullYear()+"-"+t.getMonth()+1+"-"+t.getDate()+" "+hr+":"+min+":"+sec
Hanya untuk memberikan 5 sen saya.
Format tanggal saya adalah dd.mm.yyyy (format UK) dan tidak ada contoh di atas yang berfungsi untuk saya. Semua parser mempertimbangkan mm sebagai hari dan dd sebagai bulan.
Saya telah menemukan perpustakaan ini: http://joey.mazzarelli.com/2008/11/25/easy-date-parsing-with-javascript/ dan berhasil, karena Anda dapat mengatakan urutan bidang seperti ini:
>>console.log(new Date(Date.fromString('09.05.2012', {order: 'DMY'})));
Wed May 09 2012 00:00:00 GMT+0300 (EEST)
Saya harap itu membantu seseorang.
Moment.js akan menangani ini:
var momentDate = moment('23.11.2009 12:34:56', 'DD.MM.YYYY HH:mm:ss');
var date = momentDate.;
Anda dapat menggunakan perpustakaan moment.js untuk ini. Saya hanya menggunakan untuk mendapatkan keluaran spesifik waktu tetapi Anda dapat memilih format apa yang ingin Anda pilih.
Referensi:
1. perpustakaan sesaat: https://momentjs.com/
2. fungsi spesifik waktu dan tanggal: https://timestamp.online/article/how-to-convert-timestamp-to-datetime-in-javascript
convertDate(date) {
var momentDate = moment(date).format('hh : mm A');
return momentDate;
}
dan Anda dapat memanggil metode ini seperti:
this.convertDate('2020-05-01T10:31:18.837Z');
Saya harap ini membantu. Nikmati pengkodean.
Untuk sepenuhnya memenuhi string konversi Date.parse ke format dd-mm-YYYY seperti yang ditentukan dalam RFC822, jika Anda menggunakan parse yyyy-mm-dd dapat melakukan kesalahan.
//Here pdate is the string date time
var date1=GetDate(pdate);
function GetDate(a){
var dateString = a.substr(6);
var currentTime = new Date(parseInt(dateString ));
var month =("0"+ (currentTime.getMonth() + 1)).slice(-2);
var day =("0"+ currentTime.getDate()).slice(-2);
var year = currentTime.getFullYear();
var date = day + "/" + month + "/" + year;
return date;
}