Ketika saya menggunakan fungsi date()
PHP pada dua server yang berbeda, saya mendapatkan dua hasil yang berbeda, tetapi kedua server harus sama.
Saya memeriksa file php.ini
pada server # 1, di mana waktunya tepat, dan tampilannya sebagai berikut:
date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone America/Chicago
Directive Local Value Master Value
---------------------------------------------------
date.timezone America/Chicago America/Chicago
Saya memeriksa server # 2 dan tampilannya sebagai berikut:
date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone UTC
Directive Local Value Master Value
---------------------------------------------------
date.timezone America/Chicago America/Chicago
Satu-satunya perbedaan yang saya lihat adalah nilai "Zona waktu default".
Tanggal/waktu untuk kedua server ditampilkan saat ini sebagai:
Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39
Saya mengkonfirmasi bahwa kedua server menggunakan php.ini
yang terletak di dalam /etc
dan saya juga mencari kedua direktori web untuk tempat mana pun yang mungkin ditimpa oleh zona waktu:
grep -r "date_default_timezone_set" *
Namun dalam hal itu, keduanya mengandung file yang sama dengan pengaturan yang sama.
Apakah "Zona waktu default" apa yang menyebabkan perbedaan 5 jam? Jika demikian, bagaimana cara memperbaikinya?
PERBARUI
Memuat file konfigurasi.
Server #
2 berisi dua file ini tambahan:
/etc/php.d/snmp.ini
/etc/php.d/apc.ini
php -i hasil.
Server # 1:
date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Chicago
Directive => Local Value => Master Value
date.timezone => America/Chicago => America/Chicago
Server # 2:
date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Chicago
Directive => Local Value => Master Value
date.timezone => America/Chicago => America/Chicago
Yang menarik untuk dicatat di sini adalah karena alasan tertentu "Zona waktu default" tidak cocok pada server # 2 saat melihatnya melalui php -i
dibandingkan phpinfo()
pada halaman web.
SOLUSI
Masalahnya dengan CMS dan plugin-nya. Meskipun server # 1 dan # 2 memiliki file dan segalanya yang sama, tampaknya plugin tidak dimuat dalam urutan yang
sama pada setiap server, yang memungkinkan plugin terakhir dimuat untuk menentukan zona waktu skrip saya.
Alasan php -i
dan phpinfo
berbeda karena setelah Anda menggunakan date_default_timezone_set()
, itu mempengaruhi apa yang akan dicetak phpinfo()
.
Cara mengatasinya adalah memastikan bahwa saya berada di zona waktu yang saya perlukan melalui date_default_timezone_set()
. Alasan yang tidak berfungsi untuk saya sebelum saya memposting pertanyaan ini adalah karena saya menyatakan ini sebelum memuat beberapa file yang
diperlukan dari CMS, yang mungkin mengatur zona waktu lagi di sana.
Fungsi date/ time memungkinkan kita untuk mendapatkan tanggal dan waktu dari server tempat skrip PHP yang berjalan. Kemudian kita dapat menggunakan fungsi date/ time untuk memformat tanggal dan waktu dengan beberapa cara.
Catatan: Fungsi ini bergantung pada pengaturan lokal server kita . Ingatlah untuk mempertimbangkan waktu musim panas dan tahun kabisat saat bekerja
dengan fungsi-fungsi ini.
Fungsi date/ time PHP adalah bagian dari inti PHP. Tidak diperlukan instalasi untuk menggunakan fungsi-fungsi ini.
Function | Deskripsi |
---|
checkdate()
| Memvalidasi tanggal Gregorian
|
date_add()
| Menambahkan hari, bulan, tahun, jam, menit, dan detik ke tanggal
|
date_create_from_format()
| Mengembalikan objek DateTime baru yang diformat sesuai dengan format yang ditentukan
|
date_create()
| Mengembalikan objek DateTime baru
|
date_date_set()
| Tetapkan tanggal baru
|
date_default_timezone_get()
| Mengembalikan zona waktu default yang digunakan oleh semua fungsi tanggal / waktu
|
date_default_timezone_set()
| Tetapkan zona waktu yang digunakan oleh semua fungsi tanggal / waktu
|
date_diff()
| Mengembalikan selisih antara dua tanggal
|
date_format()
| Mengembalikan tanggal yang diformat sesuai dengan format yang ditentukan
|
date_get_last_errors()
| Mengembalikan peringatan / kesalahan yang ditemukan dalam string tanggal
|
date_interval_create_from_date_string()
| Menyiapkan DateInterval dari bagian relatif string
|
date_interval_format()
| Memformat interval
|
date_isodate_set()
| Setel tanggal ISO
|
date_modify()
| Mengubah stempel waktu
|
date_offset_get()
| Mengembalikan offset zona waktu
|
date_parse_from_format()
| Mengembalikan larik asosiatif dengan info mendetail tentang tanggal tertentu, menurut format yang ditentukan
|
date_parse()
| Mengembalikan larik asosiatif dengan info mendetail tentang tanggal tertentu
|
date_sub()
| Mengurangi hari, bulan, tahun, jam, menit, dan detik dari tanggal
|
date_sun_info()
| Mengembalikan larik yang berisi info tentang matahari terbenam / matahari terbit dan awal / akhir senja, untuk hari dan lokasi tertentu
|
date_sunrise()
| Mengembalikan waktu matahari terbit untuk hari dan lokasi tertentu
|
date_sunset()
| Mengembalikan waktu matahari terbenam untuk hari dan lokasi tertentu
|
date_time_set()
| Atur waktu
|
date_timestamp_get()
| Mengembalikan stempel waktu Unix
|
date_timestamp_set()
| Setel tanggal dan waktu berdasarkan stempel waktu Unix
|
date_timezone_get()
| Mengembalikan zona waktu dari objek DateTime tertentu
|
date_timezone_set()
| Menetapkan zona waktu untuk objek DateTime
|
date()
| Memformat tanggal dan waktu lokal
|
getdate()
| Mengembalikan informasi tanggal / waktu dari stempel waktu atau tanggal / waktu lokal saat ini
|
gettimeofday()
| Mengembalikan waktu saat ini
|
gmdate()
| Memformat tanggal dan waktu GMT / UTC
|
gmmktime()
| Mengembalikan stempel waktu Unix untuk tanggal GMT
|
gmstrftime()
| Memformat tanggal dan waktu GMT / UTC sesuai dengan pengaturan lokal
|
idate()
| Memformat waktu / tanggal lokal sebagai bilangan bulat
|
localtime()
| Mengembalikan waktu setempat
|
microtime()
| Mengembalikan stempel waktu Unix saat ini dengan mikrodetik
|
mktime()
| Mengembalikan stempel waktu Unix untuk tanggal
|
strftime()
| Memformat waktu dan / atau tanggal lokal menurut pengaturan lokal
|
strptime()
| Mengurai waktu / tanggal yang dibuat dengan strftime ()
|
strtotime()
| Mengurai tanggal waktu tekstual bahasa Inggris menjadi stempel waktu Unix
|
time()
| Mengembalikan waktu saat ini sebagai stempel waktu Unix
|
timezone_abbreviations_list()
| Mengembalikan larik asosiatif yang berisi dst, offset, dan nama zona waktu
|
timezone_identifiers_list()
| Mengembalikan larik terindeks dengan semua pengenal zona waktu
|
timezone_location_get()
| Mengembalikan informasi lokasi untuk zona waktu tertentu
|
timezone_name_from_ abbr()
| Mengembalikan nama zona waktu dari singkatan
|
timezone_name_get()
| Mengembalikan nama zona waktu
|
timezone_offset_get()
| Mengembalikan perbedaan zona waktu dari GMT
|
timezone_open()
| Membuat objek DateTimeZone baru
|
timezone_transitions_get()
| Mengembalikan semua transisi untuk zona waktu
|
timezone_version_get()
| Mengembalikan versi timezonedb
|