[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Операции с датами
LRCenter
Поделитесь скаральным знанием Шао-Линьских php-монахов, как работать с датами.

Интересует следующее:

1. Допустим есть 3 даты в формате dd.mm.yyyy (13.10.2010)
Мне нужно создать такое условие при котором код выполнялся бы если дата1 календарно больше даты2 и меньше даты3 (все включительно).
т.е. что-то типа:

if ($date1 >= $date2 && $date1 <= $date3) {}



2. Как прибавить к дате в таком формате определенное число дней?

3. Как вычислить (положительную или отрицательную) разницу между двумя датами в днях?

4. Как определить день недели?



Спустя 17 минут, 6 секунд (13.10.2010 - 10:37) linker написал(а):
1.
if (strtotime($date1) >= strtotime($date2) && strtotime($date1) <= strtotime($date3))
{
}

2.
$SecPerDay = 60 * 60 * 24;
$date4 = date('d.m.Y', strtotime($date1) + $SecPerDay);
3. Поиск по форуму.
4.
date('w', strtotime($date4));
или
date('l', strtotime($date4));
Вообще php-мануал рулит http://www.php.ru/manual/function.date.html

Спустя 3 часа, 8 минут, 13 секунд (13.10.2010 - 13:45) LRCenter написал(а):
Спасибо за исчерпывающий комментарий.

Цитата
Вообще php-мануал рулит


Понятно что рулит. Но системно изучать язык очень неинтересно smile.gif

Спустя 24 минуты, 20 секунд (13.10.2010 - 14:10) linker написал(а):
Зато быстрее, чем скакать с места на место. wink.gif

Спустя 2 минуты, 11 секунд (13.10.2010 - 14:12) LRCenter написал(а):
Зато не так весело user posted image

Спустя 1 день, 3 часа, 22 минуты, 22 секунды (14.10.2010 - 17:34) LRCenter написал(а):
Для всех интересующихся - найти положительную или отрицательную разницу между 2-мя датами можно так:


$sDate = "16.12.2010";
$eDate = "18.11.2010";
$sStart = explode(".",$sDate);
$sEnd = explode(".", $eDate);
$start = mktime(0,0,0,$sStart[1],$sStart[0],$sStart[2]);
$end = mktime(0,0,0,$sEnd[1],$sEnd[0], $sEnd[2]);
$secInDay = 60 * 60 * 24;
$days = ($end-$start)/$secInDay;
echo $days;

Спустя 4 минуты, 25 секунд (14.10.2010 - 17:39) arvitaly написал(а):
Цитата
$sDate = "16.12.2010";
$eDate = "18.11.2010";
$sStart = explode(".",$sDate);
$sEnd = explode(".", $eDate);
$start = mktime(0,0,0,$sStart[1],$sStart[0],$sStart[2]);
$end = mktime(0,0,0,$sEnd[1],$sEnd[0], $sEnd[2]);
$secInDay = 60 * 60 * 24;
$days = ($end-$start)/$secInDay;
echo $days;


ересь какая то

Спустя 4 минуты, 51 секунда (14.10.2010 - 17:43) aH6y написал(а):
LRCenter
я бы делал с помощью unix времени, то есть в секундах - проще как по мне.

Спустя 1 минута, 33 секунды (14.10.2010 - 17:45) aH6y написал(а):
Цитата (arvitaly @ 14.10.2010 - 17:39)
Цитата
$sDate = "16.12.2010";
$eDate = "18.11.2010";
$sStart = explode(".",$sDate);
$sEnd = explode(".", $eDate);
$start = mktime(0,0,0,$sStart[1],$sStart[0],$sStart[2]);
$end = mktime(0,0,0,$sEnd[1],$sEnd[0], $sEnd[2]);
$secInDay = 60 * 60 * 24;
$days = ($end-$start)/$secInDay;
echo $days;


ересь какая то

это потому что запись в бд сделана в виде даты, а не time()

Спустя 3 минуты, 59 секунд (14.10.2010 - 17:49) arvitaly написал(а):
Цитата
это потому что запись в бд сделана в виде даты, а не time()


Нет это потому что написана фигня (бд тут вообще не причем).

Спустя 1 минута, 10 секунд (14.10.2010 - 17:50) LRCenter написал(а):
aH6y
Зато при выводе или экспорте-импорте меньше ресурсов тратится - просто вывел и все. А секунды еще преобразовывать надо.

Спустя 1 минута, 29 секунд (14.10.2010 - 17:52) LRCenter написал(а):
arvitaly

А в чем фигня-то? На входе 2 даты в таком формате, как принято в России, на выходе разница между ними в днях. Что не так?

Спустя 1 минута, 15 секунд (14.10.2010 - 17:53) aH6y написал(а):
Цитата (LRCenter @ 14.10.2010 - 17:50)
aH6y
Зато при выводе или экспорте-импорте меньше ресурсов тратится - просто вывел и все. А секунды еще преобразовывать надо.

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

и не пишу уже о том, какое ко-во ячеек придёться изменять при пользовании ресурсом больше года и т.д...

я тоже когда начинал учить php в бд заносил и время - дату строкой и время time(), т.к. банально не знал на тот момент о том как преобразовать unix время в читабельный вид.

как только узнал сразу же удалил все читабельные ячейки времени и даты из бд и переписал на unix время, что и тебе советую

Спустя 2 минуты, 26 секунд (14.10.2010 - 17:55) LRCenter написал(а):
aH6y
Хм. Большое спасибо за критику smile.gif

Спустя 3 минуты, 18 секунд (14.10.2010 - 17:59) arvitaly написал(а):
$sDate = "16.12.2010";
$eDate = "18.11.2010";
$days = (strtotime($eDate) - strtotime($sDate))/86400;

Спустя 1 минута, 13 секунд (14.10.2010 - 18:00) aH6y написал(а):
LRCenter
пожалуйста)
кстать если хошь можешь проверить скорость работы с датой из бд и с преобразованием через функцию.

попозже и сам проверю.

Спустя 19 минут, 32 секунды (14.10.2010 - 18:19) LRCenter написал(а):
aH6y
Дело в том, что я храню данные в csv-таблицах, т.е. flat-file, и мне хочется чтобы дата была читаема в хранимом виде.

Спустя 2 минуты, 29 секунд (14.10.2010 - 18:22) LRCenter написал(а):
arvitaly
Спасибо за то что сделали мой код более лаконичным smile.gif

Спустя 1 минута, 15 секунд (14.10.2010 - 18:23) aH6y написал(а):
Цитата (LRCenter @ 14.10.2010 - 18:19)
aH6y
Дело в том что я храню данные в csv-таблицах, т.е. flat-file, и мне хочется чтобы дата была читаема в хранимом виде.

смысл?
ведь если у тя будет большой проэкт, то ты скорее сделаешь админку, чем бушь заглядывать в бд и там что-то править иль смотреть на дату...

Спустя 1 минута, 59 секунд (14.10.2010 - 18:25) arvitaly написал(а):
Цитата
Спасибо за то что сделали мой код более лаконичным


я бы сказал, что я сделал свой код)

Спустя 3 минуты, 44 секунды (14.10.2010 - 18:29) LRCenter написал(а):
Одно из преимуществ csv, как раз в том что данные можно редактировать и помошью редактора таблиц вроде excel-я (очень удобно), это часто бывает нужно, при работе с определенными видами данных. Тем более что с экселем умеют работать почти все, а с админкой еще надо освоиться.

Спустя 6 минут, 28 секунд (14.10.2010 - 18:35) aH6y написал(а):
Цитата
Одно из преимуществ csv, как раз в том что данные можно редактировать и помошью редактора таблиц вроде excel-я (очень удобно), это часто бывает нужно, при работе с определенными видами данных. Тем более что с экселем умеют работать почти все, а с админкой еще надо освоиться.

сколько людей - столько и мнений.

Спустя 48 секунд (14.10.2010 - 18:36) LRCenter написал(а):
точно biggrin.gif

Спустя 25 минут, 5 секунд (14.10.2010 - 19:01) LRCenter написал(а):
Кстати, если говорить о потребности переводе даты в другой формат, то зачем это может понадобиться?

Северо-американский "месяц-день-год", вообще нелогичен. Мне кажется наш формат самым удобным, а если все-же и потребуется перевести для каких-нибудь нужд локализация и т.п., то в вашем случае и так - и так дату преобразовывать необходимо.

Спустя 25 минут, 47 секунд (14.10.2010 - 19:27) linker написал(а):
LRCenter
Когда хранишь timestamp то ничего преобразовывать не надо, достаточно написать echo
date("формат вывода даты", $timestamp)
, а вот храня даты в виде строки, придется изрядно покорячится, чтобы сделать что-то вида: Четверг, 14 сентября 2010 года

Спустя 8 часов, 52 минуты, 48 секунд (15.10.2010 - 04:20) arvitaly написал(а):
Цитата
Одно из преимуществ csv, как раз в том что данные можно редактировать и помошью редактора таблиц вроде excel-я (очень удобно), это часто бывает нужно, при работе с определенными видами данных. Тем более что с экселем умеют работать почти все, а с админкой еще надо освоиться.


Есть phpmyadmin,mysqlfront,navicat и куча других программ для работы с mysql, причем тут админка?

Спустя 4 часа, 56 минут, 26 секунд (15.10.2010 - 09:16) LRCenter написал(а):
arvitaly

Скажите это какому-нибудь офисному клерку biggrin.gif

Спустя 1 минута, 43 секунды (15.10.2010 - 09:18) arvitaly написал(а):
Ну извините править базу данных в Excel, а потом как то синхронизировать закачку на сервер по моему явно не стоит того.

Я понимаю еще на VBA скрипт отслеживающий изменения и отправляющий на сервер и получающий их обратно это да - а так фигня какая то

Спустя 3 часа, 35 минут, 47 секунд (15.10.2010 - 12:54) LRCenter написал(а):
arvitaly
В смысле синхронизировать? У меня данные в csv и хранятся.
Хотя многие коммерчесие CMS имеют функцию экспорта\импорта csv, в моем случае просто заливаешь файл с заменой и все.

Спустя 4 минуты, 22 секунды (15.10.2010 - 12:58) arvitaly написал(а):
Цитата
arvitaly
В смысле синхронизировать? У меня данные в csv и хранятся.
Хотя многие коммерчесие CMS имеют функцию экспорта\импорта csv, в моем случае просто заливаешь файл с заменой и все.


Нет а как 2 человека то одновременно должны работать? Все БД существуют именно для этого

Спустя 10 минут, 41 секунда (15.10.2010 - 13:09) LRCenter написал(а):
Понятно. В моем случае такое не требуется, никакой асинхронности быть не может - админ один smile.gif

Спустя 7 минут, 16 секунд (15.10.2010 - 13:16) arvitaly написал(а):
ппц зачем тогда php вообще

Спустя 2 минуты, 48 секунд (15.10.2010 - 13:19) LRCenter написал(а):
Кроме разделения доступа php других задач решать не может, что-ли?

Спустя 5 минут, 28 секунд (15.10.2010 - 13:24) silius написал(а):
LRCenter
админка на сайте - это хороший тон работы программиста, нет админки, всё руками нужно править, так делай тогда статический сайт. Пиши странички html.

что касается:
Цитата

Скажите это какому-нибудь офисному клерку

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

Спустя 6 минут, 21 секунда (15.10.2010 - 13:31) LRCenter написал(а):
Да есть админка, просто параллельно есть возможность редактировать базы, бывают ситуации когда это намного удобней.

Спустя 1 месяц, 18 дней, 2 часа, 30 минут, 54 секунды (3.12.2010 - 17:01) Feefoktyren написал(а):
и вот большой и жирный минус последнего варианта --
не на всех серверах работает strtotime- да и еще бывает разница от метода исчесления(1901 или 1970гг)


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.