Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Что не так с датой? / 6 сообщений из 6, страница 1 из 1
18.11.2014, 12:19
    #38809333
H.e.l.p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с датой?
Добрый день!

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

Тут все верно, возраст 16 лет:

$datetime1 = new DateTime('1994-03-26');
$datetime2 = new DateTime('2010-03-26');
$interval = $datetime1->diff($datetime2);
var_export($interval);

DateInterval::__set_state(array( 'y' => 16, 'm' => 0, 'd' => 0, 'h' => 0, 'i' => 0, 's' => 0, 'invert' => 0, 'days' => 5844, ))

*****

А вот тут полная ж..а, должно быть 16, а показывает 15.

$datetime1 = new DateTime('1994-03-27');
$datetime2 = new DateTime('2010-03-27');
$interval = $datetime1->diff($datetime2);
var_export($interval);

DateInterval::__set_state(array( 'y' => 15, 'm' => 11, 'd' => 27, 'h' => 23, 'i' => 0, 's' => 0, 'invert' => 0, 'days' => 5843, ))

******

А вот тут опять все верно

$datetime1 = new DateTime('1994-03-28');
$datetime2 = new DateTime('2010-03-28');
$interval = $datetime1->diff($datetime2);
var_export($interval);

DateInterval::__set_state(array( 'y' => 16, 'm' => 0, 'd' => 0, 'h' => 0, 'i' => 0, 's' => 0, 'invert' => 0, 'days' => 5844, ))

Что не так с этими датами?
...
Рейтинг: 0 / 0
18.11.2014, 12:54
    #38809389
H.e.l.p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с датой?
Помогает лишь одно, сместить даты на на пару часов (т.е. не сравнивать время по нулям) или сменит таймзону:

date_default_timezone_set('UTC');

// Сравнение дат
...

date_default_timezone_set(date_default_timezone_get());
...
Рейтинг: 0 / 0
19.11.2014, 17:26
    #38811024
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с датой?
паигрался...при других годах иногда всё норм, иногда ошибка на 28 числе....

ересь какаято.
...
Рейтинг: 0 / 0
20.11.2014, 07:34
    #38811377
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с датой?
H.e.l.pЧто не так с этими датами?
В 1994 27 марта уже в летнем времени, а в 2010 - еще в зимнем.
...
Рейтинг: 0 / 0
20.11.2014, 11:17
    #38811592
anvano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что не так с датой?
Поэтому, когда мне надо было вычислять сколько человеку полных лет до какой-то даты, я просто к его дню рождения прибавлял по году, до тех пор, пока полученная сумма была меньше проверяемой даты:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?php

$birthday = new DateTime('1994-03-26');
$checkdate =new DateTime('2010-03-26');

$full_years = 0;

$birthday->modify( '+1 year' );
while($birthday <= $checkdate){
  $full_years++;
  $birthday->modify( '+1 year' );
}

echo $full_years;
...
Рейтинг: 0 / 0
21.11.2014, 16:51
    #38813476
Что не так с датой?
Код: php
1.
2.
3.
$datetime1 = new DateTime('1994-03-27');
$datetime2 = new DateTime('2010-03-27');
$interval = $datetime1->diff($datetime2, TRUE);


а так?
просто у меня пых 5.6 там такое не наблюдается...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Что не так с датой? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]