Dari server saya mendapatkan variabel datetime dalam format ini: 6/29/2011 4:52:48 PM
dan itu dalam waktu UTC. Saya ingin mengubahnya menjadi waktu browser pengguna saat ini menggunakan JavaScript.
Bagaimana ini bisa dilakukan menggunakan JavaScript atau jQuery?
Jawaban:
Tambahkan 'UTC' ke string sebelum mengubahnya menjadi tanggal dalam javascript:
sumber
!
Waspadalah!
_ ... parsing string tanggal dengan konstruktor Date (dan Date.parse, mereka setara) sangat tidak disarankan karena perbedaan browser dan inkonsistensi ... (yang mungkin lebih benar pada tahun 2011)Dalam pandangan saya server harus selalu dalam kasus umum mengembalikan datetime dalam format ISO 8601 standar .
Info lebih lanjut di sini:
Dalam hal ini server akan mengembalikan
'2011-06-29T16:52:48.000Z'
yang akan memberi makan langsung ke objek Tanggal JS.Itu
localDate
akan berada di waktu lokal yang tepat yang dalam kasus saya akan dua jam kemudian (waktu DK).Anda benar - benar tidak perlu melakukan semua penguraian ini yang hanya mempersulit barang, selama Anda konsisten dengan format apa yang diharapkan dari server.
sumber
DateTime
objek.toString("o")
yang mengembalikan string berformat ISO-8601 seperti yang ditunjukkan di atas. msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx Dalam javascript itunew Date().toISOString()
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ini adalah solusi universal:
Pemakaian:
Tampilkan tanggal berdasarkan pengaturan lokal klien:
sumber
Anda harus mendapatkan ofset (UTC) klien (dalam menit):
Dan kemudian tambahkan koresponden atau substraksi ke waktu yang Anda dapatkan dari server.
Semoga ini membantu.
sumber
Bagi saya solusi di atas tidak berhasil.
Dengan IE, konversi tanggal-waktu UTC ke lokal sedikit rumit. Bagi saya, tanggal-waktu dari web API adalah
'2018-02-15T05:37:26.007'
dan saya ingin mengonversi sesuai zona waktu lokal jadi saya menggunakan kode di bawah ini dalam JavaScript.sumber
Masukkan fungsi ini di kepala Anda:
Kemudian hasilkan yang berikut untuk setiap tanggal di badan halaman Anda:
Untuk menghapus GMT dan zona waktu, ubah baris berikut:
sumber
Ini bekerja untuk saya:
sumber
Setelah mencoba beberapa lainnya yang diposting di sini tanpa hasil yang baik, ini sepertinya berhasil bagi saya:
Dan ini bekerja sebaliknya, dari Tanggal Lokal ke UTC:
sumber
new Date(+date + date.getTimezoneOffset() * 6e4)
. ;-)Tambahkan zona waktu di akhir, dalam hal ini 'UTC':
setelah itu, gunakan keluarga fungsi toLocale () * untuk menampilkan tanggal di lokal yang benar
sumber
Jawaban Matt tidak memiliki fakta bahwa waktu musim panas bisa berbeda antara Date () dan tanggal saat itu perlu dikonversi - berikut ini solusi saya:
Dan hasilnya di debugger:
sumber
Gunakan ini untuk konversi waktu UTC dan Lokal dan sebaliknya.
sumber
Ini adalah solusi yang disederhanakan berdasarkan jawaban Adorjan Princ:
Pemakaian:
sumber
Jika Anda tidak keberatan menggunakan
moment.js
dan waktu Anda di UTC gunakan saja yang berikut ini:jika waktu Anda tidak ada dalam utc tetapi tempat lain yang Anda kenal, gunakan berikut ini:
jika waktu Anda sudah di lokal, maka gunakan berikut ini:
sumber
Bagi saya yang paling sederhana tampaknya menggunakan
(saya pikir baris pertama bisa cukup tetapi ada zona waktu yang tidak aktif dalam fraksi jam)
sumber
new Date('date string')
, dan kemudian menambahkan dua baris ini dan tampaknya akan kembali dengan waktu yang didasarkan sepenuhnya dari timestamp UTC server dengan penyesuaian yang dibuat agar sesuai dengan waktu setempat pengguna. Saya harus khawatir tentang fraksi aneh dari zona waktu satu jam juga ... Tidak yakin apakah itu tahan dengan sempurna sepanjang waktu ...String tanggal JSON (bersambung dalam C #) terlihat seperti "2015-10-13T18: 58: 17".
Dalam sudut, (mengikuti Hulvej) buat
localdate
filter:Kemudian, tampilkan waktu setempat seperti:
sumber
Menggunakan
YYYY-MM-DD hh:mm:ss
format:Untuk mengkonversi dari
YYYY-MM-DD hh:mm:ss
format, pastikan tanggal Anda mengikuti format ISO 8601 .Hal-hal penting yang perlu diperhatikan
T
, spasi tidak akan berfungsi di beberapa browser+hh:mm
, menggunakan string untuk zona waktu (mis.: 'UTC') tidak akan berfungsi di banyak browser.+hh:mm
mewakili offset dari zona waktu UTC.sumber
@Adorojan's
jawabannya hampir benar. Tetapi penambahan offset tidak benar karena nilai offset akan negatif jika tanggal browser lebih cepat dari GMT dan sebaliknya. Di bawah ini adalah solusi yang saya gunakan dan bekerja dengan baik untuk saya:sumber
Bagi saya, ini bekerja dengan baik
sumber
Saya Menjawab Ini Jika Ada yang menginginkan fungsi yang menampilkan waktu yang dikonversi ke elemen id tertentu dan menerapkan string format tanggal yyyy-mm-dd di sini date1 adalah string dan id adalah id dari elemen yang akan ditampilkan waktu itu.
saya tahu bahwa jawaban telah diterima tetapi saya dapatkan di sini karena google dan saya menyelesaikannya dengan mendapatkan inspirasi dari jawaban yang diterima jadi saya ingin membagikannya jika seseorang membutuhkannya.
sumber
Berdasarkan jawaban @ digitalbath, berikut adalah fungsi kecil untuk mengambil stempel waktu UTC dan menampilkan waktu lokal dalam elemen DOM yang diberikan (menggunakan jQuery untuk bagian terakhir ini):
https://jsfiddle.net/moriz/6ktb4sv8/1/
sumber
Saya menulis skrip kecil yang bagus yang mengambil zaman UTC dan mengubahnya menjadi zona waktu sistem klien dan mengembalikannya dalam format d / m / YH: i: s (seperti fungsi tanggal PHP):
sumber
Anda dapat menggunakan momentjs ,
moment(date).format()
akan selalu memberikan hasil pada tanggal lokal .Bonus , Anda dapat memformat dengan cara apa pun yang Anda inginkan. Untuk misalnya.
Untuk lebih jelasnya Anda dapat merujuk situs web Moment js
sumber
Anda bisa menyelesaikannya menggunakan moment.js file .
Sederhana saja, Anda baru saja menyebutkan tempat zona waktu.
Contoh: Jika Anda mengubah datetime Anda ke zona waktu Asia / Kolkata, Anda hanya perlu menyebutkan nama tempat zona waktu yang diperoleh dari moment.js
sumber
Saya telah membuat satu fungsi yang mengubah semua zona waktu menjadi waktu lokal.
Saya tidak menggunakan getTimezoneOffset (), karena tidak mengembalikan nilai offset yang tepat
Persyaratan:
sumber
Dalam kasus saya, saya harus menemukan perbedaan tanggal dalam hitungan detik. Tanggal adalah string tanggal UTC, jadi saya mengubahnya menjadi objek tanggal lokal. Inilah yang saya lakukan:
sumber
Bagi yang lain yang berkunjung - gunakan fungsi ini untuk mendapatkan objek tanggal Lokal dari string UTC, harus mengurus DST dan akan bekerja pada IE, IPhone dll.
Kami membagi string (Karena penguraian Tanggal JS tidak didukung pada beberapa browser) Kami mendapatkan perbedaan dari UTC dan mengurangkannya dari waktu UTC, yang memberi kami waktu lokal. Karena offset yang dikembalikan dihitung dengan DST (koreksi saya jika saya salah), maka waktu akan diset kembali ke variabel "utc". Akhirnya kembalikan objek tanggal.
sumber
Di Angular saya menggunakan jawaban Ben seperti ini:
Sunting: Angular 1.3.0 menambahkan dukungan UTC ke filter tanggal, saya belum menggunakannya tetapi harus lebih mudah, berikut formatnya:
API Tanggal 1.4.3 Angular
sumber