Fungsi ini sepertinya hanya mengembalikan false. Apakah ada di antara Anda yang mendapatkan hal yang sama? Saya yakin saya mengabaikan sesuatu, bagaimanapun, mata segar dan semua itu ...
function isweekend($date){
$date = strtotime($date);
$date = date("l", $date);
$date = strtolower($date);
echo $date;
if($date == "saturday" || $date == "sunday") {
return "true";
} else {
return "false";
}
}
Saya memanggil fungsi menggunakan yang berikut:
$isthisaweekend = isweekend('2011-01-01');
true
danfalse
tidak boleh dikutip sebagai string. Juga kode Anda harus memberikan kesalahan parse dan bahkan tidak berjalan sama sekali karena menyimpang}
di if.Jawaban:
Jika Anda memiliki PHP> = 5.1:
function isWeekend($date) { return (date('N', strtotime($date)) >= 6); }
jika tidak:
function isWeekend($date) { $weekDay = date('w', strtotime($date)); return ($weekDay == 0 || $weekDay == 6); }
sumber
return date('w', strtotime($date)) % 6 == 0
sedikit lebih singkat.Cara lain adalah dengan menggunakan kelas DateTime , dengan cara ini Anda juga dapat menentukan zona waktu. Catatan: PHP 5.3 atau lebih tinggi.
// For the current date function isTodayWeekend() { $currentDate = new DateTime("now", new DateTimeZone("Europe/Amsterdam")); return $currentDate->format('N') >= 6; }
Jika Anda perlu memeriksa string tanggal tertentu, Anda dapat menggunakan DateTime :: createFromFormat
function isWeekend($date) { $inputDate = DateTime::createFromFormat("d-m-Y", $date, new DateTimeZone("Europe/Amsterdam")); return $inputDate->format('N') >= 6; }
Keindahan dari cara ini adalah Anda dapat menentukan zona waktu tanpa mengubah zona waktu secara global di PHP, yang dapat menyebabkan efek samping pada skrip lain (misalnya Wordpress).
sumber
Jika Anda menggunakan PHP 5.5 atau PHP 7 di atas, Anda mungkin ingin menggunakan:
function isTodayWeekend() { return in_array(date("l"), ["Saturday", "Sunday"]); }
dan akan mengembalikan "benar" jika hari ini adalah akhir pekan dan "salah" jika tidak.
sumber
Sini:
function isweekend($year, $month, $day) { $time = mktime(0, 0, 0, $month, $day, $year); $weekday = date('w', $time); return ($weekday == 0 || $weekday == 6); }
sumber
Versi kerja kode Anda (dari kesalahan yang ditunjukkan oleh BoltClock):
<?php $date = '2011-01-01'; $timestamp = strtotime($date); $weekday= date("l", $timestamp ); $normalized_weekday = strtolower($weekday); echo $normalized_weekday ; if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) { echo "true"; } else { echo "false"; } ?>
Kata "{" yang tersesat sulit dilihat, terutama tanpa editor PHP yang layak (dalam kasus saya). Jadi saya memposting versi koreksi di sini.
sumber
Untuk orang seperti saya, yang tidak minimalis, ada ekstensi PECL yang disebut " intl ". Saya menggunakannya untuk konversi idn karena cara kerjanya jauh lebih baik daripada ekstensi "idn" dan beberapa kelas n1 lainnya seperti "IntlDateFormatter".
Nah, yang ingin saya katakan adalah, ekstensi "intl" memiliki kelas yang disebut "IntlCalendar" yang dapat menangani banyak negara internasional (misalnya di Arab Saudi, hari minggu bukanlah hari akhir pekan). IntlCalendar memiliki metode IntlCalendar :: isWeekend untuk itu. Mungkin kalian mencobanya, saya suka fakta "ini berhasil untuk hampir setiap negara" di kelas intl ini.
EDIT: Tidak begitu yakin tetapi karena PHP 5.5.0, ekstensi intl dibundel dengan PHP (--enable-intl).
sumber
Ini bekerja untuk saya dan dapat digunakan kembali.
function isThisDayAWeekend($date) { $timestamp = strtotime($date); $weekday= date("l", $timestamp ); if ($weekday =="Saturday" OR $weekday =="Sunday") { return true; } else {return false; } }
sumber