перевод даты в datetime

SOMEONE

Новичок
перевод даты в datetime

Я написал свою функцию для перевода даты в DATETIME

PHP:
	function get_datetime ($year="", $month="", $day="", $hours="", $minutes="", $seconds="") {
		if ($year && $month && $day) {
			$ret=$year."-".$month."-".$day;

			if (!$hours || !$minutes || !$seconds)
				$time=date("H").":".date("i").":".date("s");
			else
				$time=$hours.":".$minutes.":".$seconds;

			return $ret." ".$time;
		}
		else
			return date(Y)."-".date(n)."-".date(j)." ".date("H").":".date("i").":".date("s");
	}
Но проблема в том, что когда передаешь в эту функцию $day=32, он так его и оставляет, а не изменяетна 1 число следующего месяца, как это делал mktime().

Подскажите пожалуйста, как исправить это недоразумение и существует ли специальная функции в PHP для преобразования ?
 

SOMEONE

Новичок
Потому как DATETIME в MySQL хранит дату в виде 2005-01-10 17:01:36

А что делает mktime ты и сам знаешь
 

Фанат

oncle terrible
Команда форума
знаю. она делает ровно то, что тебе надо.
остается только отформатировать в нужном виде.
тебе знакома такая функция, как date?

-~{}~ 10.01.05 17:18:

про логику, которая привела тебя в форум по мускулю я вообще молчу.
если тебе надо будет поместить в базу не строку формата 2005-01-10 17:01:36, а ноты - ты тоже придешь в форум по мускулю, чтобы тебе помогли их сочинить.
 

SOMEONE

Новичок
Я не хочу заморачиваться на timestamp вообще, так как неизвестно, что будет с моими скриптами, после окончания юниксовой эпохи или как это называется...
 

Bred Vilchec

Новичок
SOMEONE
в мире работает слишком много компьютеров, зависящих от timestamp, так что Умные дядьки (тм) уж точно что-нибудь придумают.

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

Фанат

oncle terrible
Команда форума
Я не хочу заморачиваться на timestamp вообще
это твои проблемы, милый.
Если ты считаешь себя умнее тысяч разработчиков, которые "заморачиваются", то зачем ты сюда-то пришел?
Если ты думаешь, что тебя кто-то здесь еще и уговаривать будет воспользоваться правильным решением, что ты уж точно ошибся адресом.
 

SOMEONE

Новичок
Спорить не буду, но в любом случае, мне не хотелось бы привязываться к чему-то сомнительному, которое рано или поздно может выйти из строя :)

Дальнейшие комментарии излишни.
 

Фанат

oncle terrible
Команда форума
мне не хотелось бы привязываться к чему-то сомнительному, которое рано или поздно может выйти из строя
срочно бросай пхп и мускуль!
твои скрипты, которые ты напишешь сейчас, гарантированно не будут работать не то, что в 37 году, а даже в 17.

Создаешь же Господь таких блаженных...
 

artbur

Новичок
хм..

Не сочтите за идиотизм, но я озадачен той же проблемой.

То есть, правильно запихивать день, месяц и год в mktime(), потом доставать через date() те же день, месяц и год и уже функцией подобной той, что привел SOMEONE формировать этот DATETIME?

Выходит, что делается двойная работа. Неужели все делают так??
 

Фанат

oncle terrible
Команда форума
а сразу получить из date нужный формат религия не позволяет?

И что значит "те же день месяц и год"? Ты пишешь, что у тебя та же проблема. А его проблему ЧИТАЛ? у него НЕ те же.
 

Profic

just Profic (PHP5 BetaTeam)
SOMEONE
после окончания юниксовой эпохи
хе-хе, а вы уверены, что она кончится в обозримом будущем?
В gnu libc time_t (это и есть unix timestamp) определен как
typedef long int time_t;
long int в реализации для 32-битных процессоров 32-битный и переполнится относительно скоро.
Для 64-битных, соответственно, 64-битный.
Теперь задачка для второклассиника, через сколько переполнится 64-битный timestamp?
 

Фанат

oncle terrible
Команда форума
Profic, не мечи бисер.
какая разница - 64 или 32?
очевидно же, что возражает оно от глупости, а не от того, что эпоха кончится.
 

Profic

just Profic (PHP5 BetaTeam)
Фанат
да я это прекрасно понимаю, просто еще раз подчеркиваю, что его "аргументация" и яйца выеденного не стоит
 

artbur

Новичок
Автор оригинала: Фанат
а сразу получить из date нужный формат религия не позволяет?

И что значит "те же день месяц и год"? Ты пишешь, что у тебя та же проблема. А его проблему ЧИТАЛ? у него НЕ те же.
1. Думаю, что та же проблема, потому как, смотря на приведенную функцию, можно понять, что SOMEONE стремится к универсальности. Я готовлю функцию для вывода списка записей в пределах заданного интервала времени и вероятность что я столкнусь с той же ситуацией, что и он велика. Потому и спросил.

2. Каким образом то, о чем мы говорим, может делать функция date()? Может я просто не курсе, сорри...
 

Фанат

oncle terrible
Команда форума
готовлю функцию для вывода списка записей в пределах заданного интервала времени
такая функция не нужна все делается средстами SQL
и вероятность что я столкнусь с той же ситуацией, что и он велика.
ТЫ ОПРЕДЕЛИСЬ УЖЕ.
или
потом доставать через date() те же день, месяц и год
или
проблема в том, что когда передаешь в эту функцию $day=32
Если ТЕ ЖЕ, то никакие манипуляции не нужны. просто составляешь их в строку.
Если может быть 32, то зачем писать про ТЕ ЖЕ?
Каким образом то, о чем мы говорим, может делать функция date()?
Ты, случайно, никогда не заходил на такой сайт - www.php.net?
 

artbur

Новичок
хм, извини, что молчал долго,

а дату рождения человека в 1954 году ты тоже через mktime в datetime переводить будешь?
Успехов...

Я спрашиваю, какой самый универсальный способ для формирования даты в datetime?
mktime не предлагать.
 

GeT

Новичок
artbur
Насколько я знаю, для значений меньше даты создания UNIX, timestamp будет отрицательным (для Windows-серверов это не работает).
Соответственно, даже для 1954 года все будет в порядке ;)

Тем не менее, все равно дни рождения и прочие "дела_давно_минувших_дней" лучше хранить в datetime, а не в timestamp.
 
Сверху