Русскоязычный формат дней недели и месяцев
Добавляем на сайт функцию, которая приводит вывод даты (месяцы, дни недели) в человеческий вид.
Помещаем в файл functions
function dateToRussian($date) {
$month = array("january"=>"января", "february"=>"февраля", "march"=>"марта", "april"=>"апреля", "may"=>"мая", "june"=>"июня", "july"=>"июля", "august"=>"августа", "september"=>"сентября", "october"=>"октября", "november"=>"ноября", "december"=>"декабря");
$days = array("monday"=>"Понедельник", "tuesday"=>"Вторник", "wednesday"=>"Среда", "thursday"=>"Четверг", "friday"=>"Пятница", "saturday"=>"Суббота", "sunday"=>"Воскресенье");
return str_replace(array_merge(array_keys($month), array_keys($days)), array_merge($month, $days), strtolower($date));
}
вывод:
<?php echo 'Сегодня '.dateToRussian(date('l, j F Y')).' года'; ?>
если нужна дата поста, то:
<?php echo dateToRussian(get_the_date()); ?>
Вывод даты в стиле twitter (4 дня назад)
<?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' назад'; ?>
Определение выходных
Простая проверка на субботу и воскресенье:
$weekday = date("l");
if ($weekday =="Saturday" OR $weekday =="Sunday") { echo 'выходной'; }
else { echo 'рабочий день'; }
Эта же проверка в jQuery:
var today = new Date();
if(today.getDay() == 6 || today.getDay() == 0) { alert ('выходной'); }
else { alert ('рабочий день'); }
Определение рабочих часов
$hour = date("G") + 3; //корректировка серверного времени
if ($hour >= 9 && $hour < 18) { echo 'рабочие часы'; }
else { echo 'НЕ рабочие часы'; }
jQuery только будущие или прошлые даты
Только прошлые даты:
$(function(){
var dtToday = new Date();
var month = dtToday.getMonth() + 1;
var day = dtToday.getDate();
var year = dtToday.getFullYear();
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
var maxDate = year + '-' + month + '-' + day;
$('#delivery_date').attr('max', maxDate);
});
Только будущие даты:
$(function(){
var dtToday = new Date();
var month = dtToday.getMonth() + 1;
var day = dtToday.getDate() + 1; // +1 блокирует и сегодняшний день
var year = dtToday.getFullYear();
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
var minDate = year + '-' + month + '-' + day;
$('#delivery_date').attr('min', minDate);
});
Если дата еще не наступила
Можно до наступления даты выводить один контент, а после наступления даты другой.
<?php $date_now = date("Y-m-d");
$date_end = '2021-11-28';
if ($date_now >= $date_end) {
echo 'Дата уже наступила';
}else{
echo 'Дата еще не наступила';
} ?>
Проверка на последний день месяца
Данная проверка нужна, например, в случае когда мы запускаем CRON (запускается 28, 29, 30 и 31 числа, т.к. в CRON нет такого параметра как последний день месяца):
59 23 28-31 * * /path/to/your/send-report.php
А в самом файле проверяем последний ли день месяца.
<?php // Последний день месяца
$date_today = date('Y-m-d');
$last_day = date("Y-m-t", strtotime($date_today));
if ($date_today == $last_day) {
echo 'Последний день месяца, отправляем отчет';
} else {
echo 'Не последний день месяца, не отправляем отчет';
} ?>
Проверка на первый день месяца проще:
$date_today = date('Y-m-d'); // Текущая дата
$first_day = date('Y-m-01'); // Первый день месяца
if ($date_today == $first_day) { echo 'Первый день месяца'; }
Мсье администратор, у Вас очень «грязный» код. Сделайте подсветку хотя бы, чтобы не ломать глаза.
Большинство здесь функций приходится разбирать самому. Некоторые не работают.
Если Вы делаете запись, будьте добры, показывать демо или в конце записи хотя бы уже собранный и рабочий код. Это и для посетителей хорошо и вам в карму.
Спасибо!)