Saya mendapat pekerjaan WordPress cron yang mengirim email secara berkala dan menyimpan stempel waktu ketika dikirim sebagai opsi, dan saya ingin menampilkan tanggal pada halaman pengaturan. Sesuatu seperti, "Email terakhir dikirim pada 'x'". Saya berada di pantai barat AS, jadi waktu kami saat ini adalah tujuh jam dari UTC.
Output saya yang diharapkan dari date_i18n (), melewati timestamp, akan menjadi tanggal yang diformat secara lokal dengan penyesuaian tujuh jam dari UTC. Namun, ini mengembalikan waktu dalam UTC. Bahkan mencoba untuk mendapatkan waktu saat ini tidak mengembalikan apa yang saya pikir akan menjadi hasil yang diharapkan.
Sebagai contoh: echo date_i18n('F d, Y H:i');
output 05 April 2013 11:36 seperti yang diharapkan, tetapi echo date_i18n('F d, Y H:i',time());
output 05 April 2013 18:36.
Apakah ini disengaja? Bagaimana saya bisa mengembalikan tanggal yang diformat secara lokal dari cap waktu yang sudah ada sebelumnya? Terima kasih atas bantuannya.
Jawaban:
Saya tahu saya terlambat tiga bulan, tetapi fungsi yang Anda inginkan di sini adalah WordPress '
get_date_from_gmt()
.Fungsi menerima tanggal GMT / UTC dalam
Y-m-d H:i:s
format sebagai parameter pertama, dan format tanggal yang Anda inginkan sebagai parameter kedua. Ini akan mengonversi tanggal Anda ke zona waktu lokal seperti yang ditetapkan pada layar Pengaturan.Contoh penggunaan:
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
sumber
echo get_date_from_gmt ( date( 'Y-m-d H:i:s', $my_timestamp ), get_option('date_format') . ' - '. get_option('time_format') );
Dari kodeks :
Coba ini:
Ini menetapkan tanggal PHP default ke opsi timezone_string WP, jika tersedia, selama durasi skrip.
sumber
date_i18n('F d, Y H:i', $your_timestamp)
tidak bekerja?echo date_i18n('F d, Y H:i',1365194723)
pernyataan ini di bagian atas index.php, yang memberi saya UTC daripada waktu Pantai Barat AS.date_i18n($format, $timestamp)
format sesuai dengan lokal, tetapi bukan zona waktu.get_date_from_gmt($datestring, $format)
format sesuai dengan zona waktu, tetapi bukan lokal. Untuk mendapatkan pemformatan menurut zona waktu dan lokal, saya melakukan hal berikut:Contoh program:
Output untuk zona waktu Los Angeles:
Referensi:
DateTimeZone
docs di php.netDateTime
docs di php.net, termasuksetTimestamp
,getTimestamp
danformat
date_i18n
sumber
Tambahkan offset zona waktu ke stempel waktu Anda.
atau lebih baik;
sumber
Konversi UTC ke string dalam zona waktu, bahasa dan format dalam opsi WordPress
Saya telah membuat fungsi dokumen yang mengubah string tanggal-waktu dalam UTC ke string tanggal-waktu yang cantik dalam bahasa, format, dan zona waktu yang tepat. Jangan ragu untuk menyalinnya.
Misalnya, lewat
"2019-05-30 18:06:01"
(dalam UTC) akan kembali"Maggio 30, 2019 10:06 am"
.Referensi:
get_date_from_gmt
DokumenDateTimeZone
docs di php.netDateTime
docs di php.net, termasukgetTimestamp
date_i18n
Dokumendate_default_timezone_set( 'UTC' );
terlepas dari zona waktu apa yang dipilih administrator dalam antarmuka pengguna, jadi ingatlah itu ketika menentukan perilaku fungsi PHP bawaan. Lihatdate_default_timezone_set
dokumen di php.net.sumber
Inilah yang tampaknya bekerja pada mesin saya (tidak ada yang bekerja):
Kode asli: https://www.simonholywell.com/post/2013/12/convert-utc-to-local-time/
Itu tidak menggunakan
date_l18n()
tapi saya kira orang bisa menggunakannya nanti ...sumber