Saat ini saya mencoba untuk menampilkan waktu pengguna tanpa menampilkan detik. Apakah ada cara saya bisa melakukan ini menggunakan Javascript .toLocaleTimeString ()?
Melakukan sesuatu seperti ini:
var date = new Date();
var string = date.toLocaleTimeString();
akan menampilkan waktu pengguna dengan setiap unit, misalnya saat ini menampilkan 3:39:15 PM. Apakah saya dapat menampilkan string yang sama, hanya tanpa detik? (mis. 15:39)
javascript
time
javadog36
sumber
sumber
hour: "2-digit"
tidak bekerja untuk saya di Chrome 42 atau FF 37 ---d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
mengembalikan"6:15 AM"
keduanya.[]
untuk meninggalkan lokal tertentu. Dengan begitu Anda tetap berada di lokal pengguna:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
Ini bekerja untuk saya:
sumber
Nilai dikembalikan oleh Date.prototype.toLocaleString bergantung pada implementasi, sehingga Anda mendapatkan apa yang Anda dapatkan. Anda dapat mencoba mengurai string untuk menghapus detik, tetapi mungkin berbeda di browser yang berbeda sehingga Anda harus membuat kelonggaran untuk setiap browser yang digunakan.
Membuat format Anda sendiri, tidak ambigu, tidak sulit menggunakan metode Tanggal. Sebagai contoh:
sumber
Dengan lokal:
sumber
Saya juga sudah mencari solusi untuk masalah ini, inilah yang akhirnya saya dapatkan:
Anda dapat mencobanya di sini: http://jsfiddle.net/B5Zrx/
\ u200E adalah beberapa karakter pemformatan yang pernah saya lihat pada beberapa versi IE (ini adalah tanda unicode kiri-ke-kanan).
Saya berasumsi bahwa jika waktu yang diformat berisi sesuatu seperti "XX: XX: XX" maka itu harus waktu dengan detik dan saya menghapus bagian terakhir, jika saya tidak menemukan pola ini, tidak ada yang berubah. Cukup aman, tetapi ada risiko meninggalkan detik dalam beberapa keadaan aneh.
Saya hanya berharap bahwa tidak ada lokal yang akan mengubah urutan bagian waktu yang diformat (misalnya membuatnya ss: mm: hh). Tanda kiri-ke-kanan ini membuat saya sedikit gugup tentang itu, itu sebabnya saya tidak menghapus tanda kanan-ke-kiri (\ u202E) - Saya lebih suka tidak menemukan kecocokan dalam kasus ini dan meninggalkan waktu diformat dengan detik dalam kasus tersebut.
sumber
toLocaleTimeString()
pengembalian apa yang mungkin tidak berlaku untuk semua lokal.Anda dapat mencoba ini, yang berfungsi untuk kebutuhan saya.
atau
sumber
:
.Inilah fungsi yang akan melakukannya, dengan komentar yang menjelaskan:
Karena, seperti yang telah dicatat orang lain, toLocaleTimeString () dapat diimplementasikan secara berbeda di browser yang berbeda, cara ini memberikan kontrol yang lebih baik.
Untuk mempelajari lebih lanjut tentang objek Tanggal Javascript, ini adalah sumber yang bagus: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
sumber
Saya pikir pertanyaan awal dapat dengan mudah dijawab dengan sesuatu yang diabaikan sejauh ini: perpecahan string sederhana. Waktu yang dikembalikan adalah string teks, cukup pisahkan di pembatas ":" dan pasang kembali string seperti yang Anda inginkan. Tidak ada plug in, tidak ada scripting yang rumit. dan ini dia:
sumber
Meskipun ini adalah pertanyaan yang lebih tua, saya memiliki yang sama sendiri baru-baru ini, dan muncul dengan solusi yang lebih sederhana menggunakan ekspresi reguler dan fungsi ganti string sebagai alternatif lain (tidak perlu untuk perpustakaan js eksternal atau mengandalkan API Internalisasi ECMAScript) :
Pendekatan ini menggunakan regex melihat-depan untuk mengambil: ss AM / PM akhir string dan mengganti bagian: ss dengan spasi, mengembalikan sisa string tidak tersentuh. (Secara harfiah mengatakan "Temukan titik dua dengan dua digit dan spasi yang diikuti oleh AM atau PM dan ganti titik dua, dua digit, dan bagian ruang hanya dengan spasi).
Ekspresi / pendekatan ini hanya berfungsi untuk Lokal en-AS dan en-AS. Jika Anda juga menginginkan hasil yang serupa dengan, katakanlah, British English (en-GB), yang tidak menggunakan AM / PM, diperlukan ekspresi reguler yang berbeda.
Berdasarkan output sampel kuesioner asli, saya berasumsi bahwa mereka terutama berurusan dengan audiens Amerika dan skema waktu en-AS.
sumber
Cukup konversikan tanggal menjadi string, lalu gabungkan substring yang Anda inginkan.
sumber
toLocaleTimeString
mengembalikan string yang berbeda pada setiap browser tergantung pada pengaturan lokal. Anda tidak dapat mengandalkan posisi ini, Anda akan mendapatkan hasil yang berbeda, mungkin rusak di browser orang lain.