Saya telah berjuang dengan ini sebentar. Saya mencoba mengubah zaman ke objek tanggal. Zaman dikirim kepada saya dalam UTC. Setiap kali Anda melewati new Date()
zaman, itu menganggap itu zaman lokal. Saya mencoba membuat objek UTC, kemudian menggunakan setTime()
untuk menyesuaikannya dengan zaman yang tepat, tetapi satu-satunya metode yang tampaknya berguna toUTCString()
dan string tidak membantu saya. Jika saya meneruskan string itu ke tanggal yang baru, ia harus memperhatikan bahwa itu UTC, tetapi tidak.
new Date( new Date().toUTCString() ).toLocaleString()
Upaya saya berikutnya adalah mencoba untuk mendapatkan perbedaan antara zaman lokal saat ini dan zaman sekarang UTC, tetapi saya juga tidak bisa mendapatkannya.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
Itu hanya memberi saya perbedaan yang sangat kecil, di bawah 1000, yang dalam milidetik.
Ada saran?
sumber
Jawaban:
Saya pikir saya punya solusi yang lebih sederhana - atur tanggal awal ke zaman dan tambahkan unit UTC. Katakanlah Anda memiliki zaman UTC disimpan dalam hitungan detik. Bagaimana
1234567890
. Untuk mengonversi itu ke tanggal yang tepat di zona waktu lokal:d
sekarang tanggal (di zona waktu saya) diatur keFri Feb 13 2009 18:31:30 GMT-0500 (EST)
sumber
var d = new Date(utcSeconds * 1000)
harus menghasilkan hasil yang sama.var d = new Date(1234567890000)
mengembalikan hasil yang samaSangat mudah,
new Date()
hanya membutuhkan milidetik, missumber
const d = new Date(epoch * 1000)
.Dan hanya untuk log, saya melakukan ini menggunakan perpustakaan Moment.js , yang saya gunakan untuk memformat pula.
sumber
Waktu zaman dalam detik dari 1 Januari 1970.
date.getTime()
mengembalikan milidetik dari 1 Januari 1970, jadi .. jika Anda memiliki cap waktu zaman, ubah menjadi cap waktu javascript dengan mengalikan dengan 1000.sumber
sumber
Untuk mengonversi waktu saat ini dalam [ms] ke waktu 24 jam. Anda mungkin perlu menentukan opsi untuk menonaktifkan format 12 jam .
atau sebagai JS:
Catatan: Penggunaan di
en-GB
sini, hanyalah pilihan tempat (acak) menggunakan format 24 jam, itu bukan zona waktu Anda!sumber
d/m/yyyy
atau bukanm/d/yyyy
? Hak (paling logis) cara untuk menampilkan ini harus:yyyy-mm-dd
. Ada yang mengambil?Waktu Epoch (yaitu Waktu Unix Epoch) hampir selalu jumlah detik yang telah berakhir sejak 1 Januari 1970 00:00:00 (waktu UTC), bukan jumlah milidetik yang disiratkan oleh beberapa jawaban di sini.
https://en.wikipedia.org/wiki/Unix_time
Karena itu, jika Anda telah diberi nilai waktu Unix Epoch mungkin akan dalam hitungan detik, dan akan terlihat seperti
1547035195
. Jika Anda ingin menjadikan manusia ini dapat dibaca dalam JavaScript, Anda perlu mengonversi nilainya menjadi milidetik, dan meneruskan nilainya keDate(value)
konstruktor, misalnya:Anda tidak perlu melakukan
d.setUTCMilliseconds(0)
langkah dalam jawaban yang diterima karenaDate(value)
konstruktor JavaScript mengambil UTC nilai dalam milidetik (bukan waktu setempat).https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
Juga perhatikan bahwa Anda harus menghindari menggunakan
Date(...)
konstruktor yang mengambil representasi string datetime, ini tidak dianjurkan (lihat tautan di atas).sumber
Apakah Anda hanya meminta untuk mengubah string UTC ke string "lokal"? Anda bisa melakukannya:
sumber
Penambahan jawaban di atas oleh @djechlin
mengkonversi waktu EPOCH ke tanggal yang dapat dibaca manusia. Hanya saja, jangan lupa bahwa jenis waktu EPOCH harus berupa Integer.
sumber
Solusi paling sederhana yang saya temukan untuk ini, adalah:
Perhatikan ini tidak memiliki
* 1000
pada akhirnew Date(timestamp)
pernyataan karena ini (bagi saya toh!) Selalu sepertinya memberikan tanggal yang salah, yaitu bukannya memberikan tahun 2019 itu memberikan tahun sebagai 51015, jadi ingatlah itu.sumber
Jika Anda lebih suka menyelesaikan cap waktu dan tanggal konversi dari dan ke UTC dan waktu setempat tanpa pustaka seperti moment.js, lihat opsi di bawah ini.
Untuk aplikasi yang menggunakan cap waktu UTC, Anda mungkin perlu menunjukkan tanggal di browser dengan mempertimbangkan zona waktu lokal dan penghematan siang hari jika berlaku. Mengedit tanggal yang ada di waktu penghematan siang hari yang berbeda walaupun di zona waktu yang sama bisa rumit.
The
Number
danDate
ekstensi bawah memungkinkan Anda untuk menampilkan dan mendapatkan tanggal di zona waktu cap waktu. Misalnya, katakanlah Anda berada di Vancouver, jika Anda mengedit tanggal di bulan Juli atau di bulan Desember, itu bisa berarti Anda mengedit tanggal di PST atau PDT.Saya sarankan Anda untuk memeriksa Cuplikan Kode di bawah untuk menguji solusi ini.
Konversi dari milidetik
Konversi dari tanggal
Pemakaian
Lihat sendiri
Tampilkan cuplikan kode
sumber
EDIT
EDIT diperbaiki
sumber
Mengingat, Anda telah
epoch_time
tersedia,sumber
var myDate = new Date( your epoch date *1000);
sumber - https://www.epochconverter.com/programming/#javascript
sumber
@Amjad, ide bagus, tetapi implementasi yang lebih baik adalah:
sumber
Pertama-tama ubah ke String dan kemudian ganti teks zona waktu.
sumber