Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите алгоритм (даты)
 
 автор: P@Sol   (05.07.2005 в 09:51)   письмо автору
 
 

как можно посчитать сколько в текущем месяце рабочих дней?

   
 
 автор: Loki   (05.07.2005 в 11:09)   письмо автору
 
   для: P@Sol   (05.07.2005 в 09:51)
 

Если решать вопрос в лоб, то стоит воспользоваться функцией date()
прогнать цикл по всему месяцу при каждом проходе сравнивая равен ли день недели 0 или 6. Если нет, то увеличиваем счетчик на 1.

http://www.softtime.ru/dic/id_dic=193&id_group=7

   
 
 автор: P@Sol   (05.07.2005 в 12:17)   письмо автору
 
   для: Loki   (05.07.2005 в 11:09)
 

это в лоб:) неужели нет ничего более совершенного, чем это?

и еще вопрос...как определить с какого дня недели начинается месяц?

   
 
 автор: cheops   (05.07.2005 в 12:29)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:17)
 

1) Для определения числа дней в месяце можно воспользоваться функцией date ()
<?php
date
('t'); // Число дней в текущем месяце
?>

Для произвольной даты в качестве второго параметра следует передать дату
<?php
date
('t'mktime(0002152005)); // Число дней в феврале 2005 года
?>

Для определения числа дней в месяце в MySQL можно воспользоваться функцией LAST_DAY().

2) Для определения дня недели следует воспользоваться форматом l или w
<?php
 date
('l'mktime(000212005)); // День недели 1 февраля 2005
 
date('l'mktime(000212005)); // День недели 1 февраля 2005 (числовой формат)
?>

   
 
 автор: P@Sol   (05.07.2005 в 12:34)   письмо автору
 
   для: cheops   (05.07.2005 в 12:29)
 

это я все понимаю, знаю...но это мне не помогло, пока...

   
 
 автор: cheops   (05.07.2005 в 12:39)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:34)
 

Хм... а почему? Какие затруднения?

   
 
 автор: P@Sol   (05.07.2005 в 12:48)   письмо автору
 
   для: cheops   (05.07.2005 в 12:39)
 

вопрос стоит: как можно посчитать сколько в текущем месяце рабочих дней?

и пока я знаю одно решение...как написано выше прогнать через цыкл и посчитать...других способов нет?

   
 
 автор: cheops   (05.07.2005 в 12:56)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:48)
 

Второе решение заключается в использовании функции date()
<?php 
$num 
date('t'); // Число дней в текущем месяце 
echo $num;
?>

   
 
 автор: P@Sol   (05.07.2005 в 12:57)   письмо автору
 
   для: cheops   (05.07.2005 в 12:56)
 

это полное кол-во:) а мне надо рабочих .т.е. по-крайне мере без выходных

   
 
 автор: cheops   (05.07.2005 в 13:06)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:57)
 

А... тогда да, только циклом - ведь в каждом месяце и каждой стране число рабочих дней различное, кроме того зависит от того используется пяти или шести-дневная система. Да и праздники меняются слишком часто, то одни, то другие, то рабочие, то нет...

   
 
 автор: P@Sol   (05.07.2005 в 12:35)   письмо автору
 
   для: cheops   (05.07.2005 в 12:29)
 


2) Для определения дня недели следует воспользоваться форматом l или w
<?php 
date
('l'mktime(000212005)); // День недели 1 февраля 2005 
date('l'mktime(000212005)); // День недели 1 февраля 2005 (числовой формат) 
?>  


т.е. я сначало должен вычислить номер меяца, год, потом запустить эту функцию? хм...интересно

   
 
 автор: P@Sol   (05.07.2005 в 12:47)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:35)
 


<?
$first 
date('w'mktime(000162005)); 
echo 
$first;


должен вывисте 3, а выводит 4 (т.к. 1 июня среда)

   
 
 автор: cheops   (05.07.2005 в 13:00)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:47)
 

Функция mktime() немного дебильная - на самом деле у вас 6 января, а 1 июня следует записывать следующим образом
<? 
$first 
date('w'mktime(000612005)); 
echo 
$first;
?>

   
 
 автор: P@Sol   (05.07.2005 в 13:02)   письмо автору
 
   для: P@Sol   (05.07.2005 в 12:35)
 

ясно:(

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования