Saya punya Date
objek. Bagaimana cara membuat title
bagian dari cuplikan berikut?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
Saya memiliki bagian "waktu relatif dalam kata-kata" dari perpustakaan lain.
Saya sudah mencoba yang berikut ini:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
Tapi itu memberi saya:
"2010-4-2T3:19"
javascript
datetime
iso8601
James A. Rosen
sumber
sumber
new Date("xx").toISOString()
menghasilkanNaN-NaN-NaNTNaN:NaN:NaN.NZ
Implementasi asli melempar RangeException.Lihat contoh terakhir di halaman https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :
sumber
<abbr title="2010-04-02T14:12:07">
) tidak memiliki zona waktu. Mungkin mereka menginginkan waktu lokal, yang masuk akal untuk rangkaian waktu UI?Hampir setiap metode to-ISO di web menjatuhkan informasi zona waktu dengan menerapkan konversi ke waktu ulu "Z" (UTC) sebelum mengeluarkan string. .ToISOString () asli browser juga menjatuhkan informasi zona waktu.
Ini membuang informasi berharga, sebagai server, atau penerima, selalu dapat mengonversi tanggal ISO lengkap ke waktu Zulu atau zona waktu mana pun yang diperlukan, sambil tetap mendapatkan informasi zona waktu pengirim.
Solusi terbaik yang pernah saya temui adalah menggunakan perpustakaan javascript Moment.js dan menggunakan kode berikut:
Untuk mendapatkan waktu ISO saat ini dengan informasi zona waktu dan milidetik
Untuk mendapatkan waktu ISO dari objek Tanggal JavaScript asli dengan informasi zona waktu tetapi tanpa milidetik
Ini dapat digabungkan dengan Date.js untuk mendapatkan fungsi seperti Date.today () yang hasilnya kemudian dapat diteruskan ke saat.
String tanggal yang diformat seperti ini adalah kompilasi JSON, dan cocok untuk disimpan ke dalam basis data. Python dan C # sepertinya menyukainya.
sumber
moment(new Date()).format()
. "Pada versi 1.5.0, format # saat panggilan tanpa format akan secara default ke ... format ISO8601YYYY-MM-DDTHH:mm:ssZ
". Doc: Gulir ke atas dari momentjs.com/docs/#/displaying/fromnowmoment().format()
"2015-03-04T17:16:05+03:00"
(new Date()).toISOString()
"2015-03-04T14:16:24.555Z"
Pertanyaan yang diajukan adalah format ISO dengan presisi rendah. Voila:
Dengan asumsi Z trailing diinginkan, jika tidak hanya menghilangkan.
sumber
Terpendek, tetapi tidak didukung oleh Internet Explorer 8 dan sebelumnya:
sumber
Jika Anda tidak perlu mendukung IE7, berikut ini adalah peretasan hebat dan ringkas:
sumber
toJSON
sebagai gantinya.JSON.stringify
tetap menggunakannya di bawah selimut.JSON
objek, meskipun tidak dalam beberapa mode kompatibilitas. Lihat stackoverflow.com/questions/4715373/….toISOString()
?Saya biasanya tidak ingin menampilkan tanggal UTC karena pelanggan tidak suka melakukan konversi di kepala mereka. Untuk menampilkan tanggal ISO lokal , saya menggunakan fungsi:
Fungsi di atas menghilangkan informasi offset zona waktu (kecuali jika waktu setempat adalah UTC), jadi saya menggunakan fungsi di bawah ini untuk menunjukkan offset lokal di satu lokasi. Anda juga dapat menambahkan outputnya ke hasil dari fungsi di atas jika Anda ingin menunjukkan offset di setiap waktu:
toLocalIsoString
menggunakanpad
. Jika diperlukan, ini berfungsi seperti hampir semua fungsi pad, tetapi demi kelengkapan inilah yang saya gunakan:sumber
Ada '+' yang hilang setelah 'T'
harus melakukannya.
Untuk nol terkemuka Anda bisa menggunakan ini dari sini :
Menggunakannya seperti ini:
sumber
sumber
Masalah dengan toISOString adalah bahwa ia memberikan datetime hanya sebagai "Z".
ISO-8601 juga mendefinisikan datetime dengan perbedaan zona waktu dalam jam dan menit, dalam bentuk seperti 2016-07-16T19: 20: 30 + 5: 30 (saat zona waktu di depan UTC) dan 2016-07-16T19: 20: 30-01 : 00 (ketika zona waktu di belakang UTC).
Saya tidak berpikir itu ide yang baik untuk menggunakan plugin lain, moment.js untuk tugas sekecil itu, terutama ketika Anda bisa mendapatkannya dengan beberapa baris kode.
Setelah Anda mengimbangi zona waktu dalam beberapa jam dan menit, Anda dapat menambahkan string datetime.
Saya menulis posting blog di atasnya: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
sumber
Saya hanya akan menggunakan ekstensi kecil ini untuk
Date
- http://blog.stevenlevithan.com/archives/date-time-formatsumber
Saya bisa mendapatkan output di bawah ini dengan kode yang sangat sedikit.
Keluaran:
sumber
Saya menemukan dasar-dasar pada Stack Overflow di suatu tempat (saya percaya itu adalah bagian dari beberapa golf kode Stack Exchange lainnya), dan saya memperbaikinya sehingga bekerja di Internet Explorer 10 atau lebih awal juga. Itu jelek, tapi itu menyelesaikan pekerjaan.
sumber
Untuk memperluas jawaban Sean yang hebat dan ringkas dengan sedikit gula dan sintaksis modern:
Lalu misalnya.
sumber