Конвертация даты в PHP

Статус
В этой теме нельзя размещать новые ответы.

krobol

Постоялец
Регистрация
5 Июн 2008
Сообщения
455
Реакции
126
Никак не получается конвертировать дату, полученную от пользователя во внутренний формат timestamp.

PHP:
$t = time();
$t1 = strtotime( date( "d-m-Y", $t ) );

$t1 почему-то далеко не равно $t (разница намного более суток)

как перевести дату, полученную из веб-формы в формате d-m-Y (31.05.2009) во внутренний формат timestamp ?
 
1. На какой оси делаешь?
2. Только что проверил, код работает верно - разница немногим более 20 часов.
3. d-m-Y - это 31-05-2009, а не 31.05.2009
 
1. ось FreeBSD
3. да, d-m-Y - это 31-05-2009 ошибся немного

2.
в переменной $_POST["db"] передаётся дата, введённая пользователем в формате d-m-Y
PHP:
print "~".$_POST["db"]."~";
$l_db = strtotime($_POST["de"]);
print strtotime($_POST["de"])."~";

результат: ~31-05-2009~2108840400~

затем, выводим на экран $l_db
PHP:
print "~".$l_db."~";print date("d-m-Y",$l_db)."~";

результат: ~2108840400~29-10-2036~


Помогите, пожалуйста, разобраться!
 
Тебе не кажется, что $_POST["db"] и $_POST["de"] - это не одно и тоже?
 
у меня просто дата начала и дата конца ($db и $de)

невнимательно написал, торопился.


Для чистоты эксперимента создал файл 1.php:

PHP:
<?php

print "~"."31-05-2009"."~"; 
print strtotime("31-05-2009")."~"."<br />"; 
$l_db = strtotime("31-05-2009"); 

print "~".$l_db."~";print date("d-m-Y",$l_db)."~"; 


?>

результат, выводимый браузером:
~31-05-2009~2108840400~
~2108840400~29-10-2036~


запускается на сервере FreeBSD на хостинге
 
ХЗ тогда.

У себя получаю
~31-05-2009~1243713600~
~1243713600~31-05-2009~

Может дело с настройками локали и/или дат.
Попробуй что выведет
PHP:
print "~"."31-05-2009"."~"; 
print strtotime("31-05-2009")."~"."<br />"; 
$l_db = strtotime("31-05-2009"); 

print "~".$l_db."~";print date("d-m-Y",$l_db)."~"."<br />";
echo mktime(0,0,0,5,31,2009);
 
Описание

int strtotime (string time [, int now])

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


Что за текущее время. Как мне быть? И почему у тебя всё нормально, а у меня что-то не то?



ось: FreeBSD 6.2-RELEASE-p3



запускаю у себя на компе (WinXP), результат как у тебя
~31-05-2009~1243713600~<br />~1243713600~31-05-2009~
 
кстати, такой код

PHP:
<?php

print "~"."05/31/2009"."~"; 
$l_db = strtotime("05/31/2009"); 
print strtotime("05/31/2009")."~"."<br />"; 


print "~".$l_db."~";print date("d-m-Y",$l_db)."~"; 

?>

на сервере выдаёт правильный ответ:
~05/31/2009~1243713600~
~1243713600~31-05-2009~




покажите, как strtotime заменить на mktime в моём случае: d-m-Y ?
наиболее простым кодом
 
krobol, что показывает код из поста #6?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху