Saya bingung saat menggunakan php untuk menangani tanggal / waktu.
Apa yang saya coba lakukan adalah ini: Ketika seorang pengguna mengunjungi halaman saya, saya menanyakan zona waktunya dan kemudian menampilkan 'hari dalam seminggu' di zona waktunya.
Saya tidak ingin menggunakan hari browser. Saya ingin melakukan perhitungan ini di php.
Inilah cara saya mencoba mencapainya:
- Zona waktu yang dimasukkan oleh pengguna
- Stempel waktu Unix dihitung dengan fungsi waktu php ().
Tapi saya tidak tahu bagaimana melanjutkan ... Bagaimana saya bisa mendapatkan 'hari dalam seminggu' di zona waktu ini.
date("N", $timestamp)
untuk mendapatkan1..7
nilai mulai dari hari Senin. Di versi yang lebih lama, Anda dapat menggunakan trik(date("w", $timestamp) + 6) % 7
untuk mendapatkan0..6
nilai mulai dari hari Senin.Solusi saya adalah ini:
Outputnya adalah:
Tuesday
Outputnya adalah:
Tue
sumber
Saya pikir ini adalah jawaban yang benar, cukup ubah
Europe/Stockholm
ke zona waktu pengguna.http://php.net/manual/en/function.date.php
Untuk daftar zona waktu yang didukung, lihat http://php.net/manual/en/timezones.php
sumber
Terima kasih banyak teman untuk komentar cepat Anda.
Inilah yang akan saya gunakan sekarang. Memposting fungsi di sini agar seseorang dapat menggunakannya.
Laporkan jika Anda menemukan koreksi.
sumber
Cara cepat lainnya:
sumber
Jika Anda bisa mendapatkan offset zona waktu mereka, Anda cukup menambahkannya ke stempel waktu saat ini dan kemudian menggunakan fungsi gmdate untuk mendapatkan waktu lokalnya.
sumber
Ini harus bekerja (tidak mengujinya, jadi YMMV). Ia bekerja dengan menyimpan zona waktu skrip saat ini, mengubahnya ke yang ditentukan oleh pengguna, mendapatkan hari dalam seminggu dari
date()
fungsi pada stempel waktu yang ditentukan, dan kemudian menyetel zona waktu skrip kembali ke awal.Anda mungkin memiliki beberapa petualangan dengan pengenal zona waktu.
sumber
"Day of Week" sebenarnya adalah sesuatu yang bisa Anda dapatkan langsung dari fungsi php date () dengan format "l" atau "N". Lihat manualnya
edit: Maaf saya tidak membaca posting Kalium dengan baik, dia sudah menjelaskan itu. Salahku.
sumber
Tanggal cek adalah Senin atau Minggu sebelum hari Senin atau Minggu terakhir
sumber
Berdasarkan salah satu solusi lain dengan bendera untuk beralih antara minggu-minggu mulai hari Minggu atau Senin
sumber
Representasi berbasis huruf standar dari bagian tanggal itu bagus, kecuali faktanya mereka tidak begitu intuitif. Cara yang jauh lebih mudah adalah mengidentifikasi abstraksi dasar dan sejumlah implementasi tertentu. Selain itu, dengan pendekatan ini, Anda dapat memperoleh manfaat dari pelengkapan otomatis.
Karena kita berbicara tentang waktu di sini, tampaknya masuk akal bahwa abstraksi dasarnya adalah
ISO8601DateTime
. Salah satu implementasi spesifik adalah datetime saat ini, yang Anda perlukan ketika a membuat permintaan ke backend Anda, karenanyaNow()
kelas. Yang kedua yang berguna bagi Anda adalah tanggal waktu yang disesuaikan dengan beberapa zona waktu. Tidak mengherankan, namanya disebutAdjustedAccordingToTimeZone
. Dan akhirnya, Anda memerlukan satu hari dalam seminggu di zona waktu yang telah berlalu: adaLocalDayOfWeek
kelas untuk itu. Jadi kodenya terlihat seperti berikut:Untuk informasi lebih lanjut tentang pendekatan ini, lihat di sini .
sumber
sumber