@Ritesh WARNING: toLocaleTimeString() may behave differently based on region / location.Ukur dua kali, potong sekali.
Abandoned Cart
@AbandonedCart apakah itu benar-benar sebuah perkataan?
gilbert-v
1
@ gilbert-v One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.Pertanyaan itu mungkin lebih baik ditanyakan di Google.
Abandoned Cart
Saya tidak akan pernah terbiasa dengan betapa berbelit-belitnya ia mencoba bekerja dengan tanggal sederhana dalam JavaScript. š
Anda juga mendeklarasikan variabel "jam" dua kali tetapi menjadikan "strTime" sebagai global yang tidak disengaja. Itu tidak terlalu elegan tetapi ini tampaknya teknik yang tepat menggunakan metode asli.
Jon z
Hai, dapatkah Anda memberi tahu saya apa yang Anda lakukan dengan ini: menit = menit <10? '0' + menit: menit;
Balz
2
@ Balz Jika menit kurang dari 10 (mis. 16:04), maka pernyataan itu menambahkan string "0" sehingga output yang diformat adalah "4:04 PM" dan bukan "4: 4 PM". Perhatikan bahwa dalam proses, menit berubah dari Angka menjadi String.
Caleb Bell
7
Saya lebih suka ini minutes = ('0'+minutes).slice(-2);daripada minutes = minutes < 10 ? '0'+minutes : minutes;
Vignesh
1
Solusi @Vignesh untuk menit lebih baik karena jika Anda melakukan yang disarankan 21:00:00 menjadi 9: 000. Vignesh's memberi Anda menit yang benar sebagai: 00. Jika Anda menggunakan solusi di atas maka Anda harus memperhitungkan 00 juga. (mintues> 0 && menit <10)? '0' + menit: menit;
Robbie Smith
201
Jika Anda hanya ingin menunjukkan jam maka ..
var time =newDate();
console.log(
time.toLocaleString('en-US',{ hour:'numeric', hour12:true}));
Orang tidak cukup menggunakan Regex. Ini bekerja untuk saya tanpa menambahkan saran perpustakaan jquery / microsoftajax di atas.
uadrive
Apa yang akan menjadi regex adalah untuk memiliki nol di awal jam jika itu adalah satu digit. Katakan dalam contoh pertama Anda pada jam 8:12 malam, jam itu akan jam 08:12 malam?
RADXack
1
@ 404 sama, ([\d]+:[\d]{2})bagian yang kami minati. Gunakan titik dua (:) sebagai pemisah dan kita lihat bagian pertama [\d]+. Nilai tambah berarti satu atau lebih. Jadi itu mencari satu atau lebih digit (termasuk nol. Jika Anda harus menjamin nol ada di sana, itu akan menjadi (0[\d]:[\d]{2}). Ini sekarang berbunyi, cari 0 ditambah satu digit lainnya, lalu titik dua, lalu sisanya.
Steve Tauber
1
console.log (Tanggal baru (). toLocaleTimeString (). ganti (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (. *) /, "$ 1 $ 3 ")); Untuk mendapatkan waktu saat ini
mujaffars
35
Jika Anda tidak perlu mencetak pagi / malam, saya menemukan yang bagus dan singkat berikut ini:
var now =newDate();var hours = now.getHours()%12||12;// 12h instead of 24h, with 12 instead of 0.
<!DOCTYPE html><html><body><p>Click the button to display the date and time as a string.</p><buttononclick="myFunction()">Try it</button><buttononclick="fullDateTime()">Try it2</button><pid="demo"></p><pid="demo2"></p><script>function myFunction(){var d =newDate();var n = d.toLocaleString([],{ hour:'2-digit', minute:'2-digit'});
document.getElementById("demo").innerHTML = n;}function fullDateTime(){var d =newDate();var n = d.toLocaleString([],{ hour12:true});
document.getElementById("demo2").innerHTML = n;}</script></body></html>
Seharusnya kurang dari atau sama dengan perhitungan jam, kalau tidak siang akan muncul sebagai 0. Jadi: var hour = (d.getHours () <= 12). Masih memiliki masalah dengan tengah malam sehingga Anda harus memeriksa apakah nol kemudian set ke 12 juga.
Ryan
11
menggunakan dateObj.toLocaleString([locales[, options]])
Opsi 1 - Menggunakan lokal
var date =newDate();
console.log(date.toLocaleString('en-US'));
Opsi 2 - Menggunakan opsi
var options ={ hour12:true};
console.log(date.toLocaleString('en-GB', options));
Catatan: didukung di semua browser tetapi atm safari
ini tidak bekerja pada peramban safari dan firefox terbaru, waktu masih menggunakan format 24 jam
euther
1
jawaban menjadi usang seiring berjalannya waktu. Jangan ragu untuk mengedit dan memperbarui!
Geo
Ini sebenarnya akan membuat string terlihat seperti 1:54 PM CDT. Untuk menghapus CDTubah regex Anda ke yang berikut .replace(/:\d+ |\CDT/g, ' '). Meskipun, CDT hanyalah zona waktu saya. Jika Anda memiliki zona waktu yang berbeda, saya kira Anda perlu mengubah ke kode zona itu.
sadmicrowave
Output dari toLocaleTimeString bergantung pada implementasi, jadi format yang sama tidak dapat diandalkan di mana-mana.
RobG
9
Di browser modern, gunakan Intl.DateTimeFormatdan paksa format 12 jam dengan opsi:
let now =newDate();newIntl.DateTimeFormat('default',{
hour12:true,
hour:'numeric',
minute:'numeric'}).format(now);// 6:30 AM
Menggunakan defaultakan menghormati lokal default browser jika Anda menambahkan lebih banyak opsi, namun masih akan menghasilkan format 12 jam.
Anda dapat menentukan am atau pm dengan kode sederhana ini
var today=newDate();var noon=newDate(today.getFullYear(),today.getMonth(),today.getDate(),12,0,0);var ampm =(today.getTime()<noon.getTime())?'am':'pm';
<h1 id="clock_display"class="text-center" style="font-size:40px; color:#ffffff">[CLOCK TIME DISPLAYS HERE]</h1><script>var AM_or_PM ="AM";function startTime(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
h = twelve_hour_time(h);
m = checkTime(m);
s = checkTime(s);
document.getElementById('clock_display').innerHTML =
h +":"+ m +":"+ s +" "+AM_or_PM;var t = setTimeout(startTime,1000);}function checkTime(i){if(i <10){
i ="0"+ i;// add zero in front of numbers < 10}return i;}// CONVERT TO 12 HOUR TIME. SET AM OR PMfunction twelve_hour_time(h){if(h >12){
h = h -12;
AM_or_PM =" PM";}return h;}
startTime();</script>
<script>
time =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt_clock').innerHTML = h +":"+ m +":"+ s;var t = setTimeout(function(){time()},0);}
time2 =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);if(h>12){
document.getElementById('txt_clock_stan').innerHTML = h-12+":"+ m +":"+ s;}var t = setTimeout(function(){time2()},0);}
time3 =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();if(h>12){
document.getElementById('hour_line').style.width = h-12+'em';}
document.getElementById('minute_line').style.width = m +'em';
document.getElementById('second_line').style.width = s +'em';var t = setTimeout(function(){time3()},0);}
checkTime =function(i){if(i<10){i ="0"+ i};// add zero in front of numbers < 10return i;}</script>
Ketika jam 12.00 siang vm ampm akan menjadi "pm". Jadi jam 12.00 siang sampai jam 11.00 siang jam adalah jam 12 sampai 23 yang menyimpan nilai "pm" dan untuk yang lain, var ampm akan menyimpan nilai "am". Semoga kamu mengerti.
Md Juyel Rana
Hai Juyel! Memang ketika jam lebih besar dari 12, nilainya akan menjadi PM. Tetapi pertanyaannya adalah "Bagaimana Anda menampilkan datetime JavaScript dalam format 12 jam AM / PM?" - Anda perlu membantu OP mengonversi sepanjang waktu ke format AM / PM. Misalnya, pukul 14:30 akan menjadi 14:30.
WARNING: toLocaleTimeString() may behave differently based on region / location.
Ukur dua kali, potong sekali.One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.
Pertanyaan itu mungkin lebih baik ditanyakan di Google.Jawaban:
sumber
minutes = ('0'+minutes).slice(-2);
daripadaminutes = minutes < 10 ? '0'+minutes : minutes;
Jika Anda hanya ingin menunjukkan jam maka ..
Output: 7 pagi
Jika Anda ingin menunjukkan menit juga maka ...
Output: 7:23 pagi
sumber
toLocaleString
hanya didukung di IE11 +.'numeric'
dengan'2-digit'
.Anda juga dapat mempertimbangkan menggunakan sesuatu seperti date.js :
sumber
Berikut cara menggunakan regex:
Ini menciptakan 3 grup yang cocok:
([\d]+:[\d]{2})
- Jam: Menit(:[\d]{2})
- Detik(.*)
- ruang dan periode (Periode adalah nama resmi untuk AM / PM)Kemudian menampilkan grup 1 dan 3.
PERINGATAN: toLocaleTimeString () dapat berperilaku berbeda berdasarkan wilayah / lokasi.
sumber
([\d]+:[\d]{2})
bagian yang kami minati. Gunakan titik dua (:) sebagai pemisah dan kita lihat bagian pertama[\d]+
. Nilai tambah berarti satu atau lebih. Jadi itu mencari satu atau lebih digit (termasuk nol. Jika Anda harus menjamin nol ada di sana, itu akan menjadi(0[\d]:[\d]{2})
. Ini sekarang berbunyi, cari 0 ditambah satu digit lainnya, lalu titik dua, lalu sisanya.Jika Anda tidak perlu mencetak pagi / malam, saya menemukan yang bagus dan singkat berikut ini:
Ini didasarkan pada jawaban @ bbrame.
sumber
Sejauh yang saya tahu, cara terbaik untuk mencapai itu tanpa ekstensi dan pengkodean kompleks adalah seperti ini:
Format Javascript AM / PM
Saya menemukan ini memeriksa pertanyaan ini.
Bagaimana cara menggunakan .toLocaleTimeString () tanpa menampilkan detik?
sumber
Saran saya adalah gunakan js saat untuk operasi tanggal dan waktu.
https://momentjs.com/docs/#/displaying/format/
sumber
Silakan temukan solusinya di bawah ini
sumber
menggunakan
dateObj.toLocaleString([locales[, options]])
Opsi 1 - Menggunakan lokal
Opsi 2 - Menggunakan opsi
Catatan: didukung di semua browser tetapi atm safari
sumber
RegExp Pendek untuk en-US:
sumber
1:54 PM CDT
. Untuk menghapusCDT
ubah regex Anda ke yang berikut.replace(/:\d+ |\CDT/g, ' ')
. Meskipun, CDT hanyalah zona waktu saya. Jika Anda memiliki zona waktu yang berbeda, saya kira Anda perlu mengubah ke kode zona itu.Di browser modern, gunakan
Intl.DateTimeFormat
dan paksa format 12 jam dengan opsi:Menggunakan
default
akan menghormati lokal default browser jika Anda menambahkan lebih banyak opsi, namun masih akan menghasilkan format 12 jam.sumber
Gunakan Moment.js untuk ini
Gunakan kode di bawah ini dalam JavaScript saat menggunakan moment.js
The
format()
Metode mengembalikan tanggal dalam format tertentu.sumber
Lihat Datejs . Pemformat bawaan mereka dapat melakukan ini: http://code.google.com/p/datejs/wiki/APIDocumentation#toString
Ini adalah perpustakaan yang sangat berguna, terutama jika Anda berencana melakukan hal-hal lain dengan objek tanggal.
sumber
Saya menemukan itu di sini itu berfungsi dengan baik.
dan contoh plunker di sini
sumber
sumber
Berikut ini cara lain yang sederhana, dan sangat efektif:
sumber
Anda dapat menentukan am atau pm dengan kode sederhana ini
sumber
sumber
sumber
sumber
Sini solusi saya
sumber
Atau cukup lakukan kode berikut:
sumber
Implementasi yang singkat dan manis:
sumber
coba ini
sumber