проблем с date()
11 отговора
188 прегледа
проблем с date()
Опитвам се да изчисля възрастта на всеки регистриран юзър. За целта използвам:
echo date("y", mktime(0,0,0, date(m) - $month, date(d) - $day, date(Y) - $year));
и всичко би трябвало да работи нормално, но когато задам стойност на $year в интервала 1932 - 1962 получавам съобщение за "неочаквана грешка в date()"
пробвах само да пресмятам годините:
echo date(Y) - $year;
същия проблем за същите години.
къде ми е грешката?
echo date("y", mktime(0,0,0, date(m) - $month, date(d) - $day, date(Y) - $year));
и всичко би трябвало да работи нормално, но когато задам стойност на $year в интервала 1932 - 1962 получавам съобщение за "неочаквана грешка в date()"
пробвах само да пресмятам годините:
echo date(Y) - $year;
същия проблем за същите години.
къде ми е грешката?
Re: проблем с date()
работи, дори с години от порядъка на 18ХХ, понякога пак дава грешки, но в повечето случай работи. На мен ми трябват всчики години от 19ХХ до днес, обаче между 1932 и 1962 изкарва "неочаквана грешка в date()"
Re: проблем с date()
deeebi
vsi4kite li si gi probbval be...
Doydoh nerazbran
Trugnah si nerazbran
Samo edin me razbra
i To pogre6no
vsi4kite li si gi probbval be...
Doydoh nerazbran
Trugnah si nerazbran
Samo edin me razbra
i To pogre6no
Re: проблем с date()
Хайде сега сериозно, кажете как да проработи.
Re: проблем с date()
мисля че грешката е тук
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst] )
Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970) and the time specified.
според мен е по добре да си направиш твоя функция ;)
...
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst] )
Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970) and the time specified.
според мен е по добре да си направиш твоя функция ;)
...
Re: проблем с date()
В такъв случай защо получавам вярни резултати за годините между 1963 и 1970 ?
мдаам...началото на времето
С почти пълна сигурност резултатите преди 1970-та са грешни! 
"Да живееш - значи да се променяш." - Анатол Франс
"Да живееш - значи да се променяш." - Анатол Франс
Re: мдаам...началото на времето
ето това връща като резултат 37:
echo date('y', mktime(0,0,0, date(m) - 6, date(d) - 23, date(Y) - 1965));
а това е което успях да измисля като решение на проблема:
if((date(m) > $a[bmonth]) || (date(m) == $a[bmonth] && date(d) < $a[bday]))
{
echo date(Y) - $a[byear];
}
else
{
echo date(Y) - $a[byear] - 1;
}
echo date('y', mktime(0,0,0, date(m) - 6, date(d) - 23, date(Y) - 1965));
а това е което успях да измисля като решение на проблема:
if((date(m) > $a[bmonth]) || (date(m) == $a[bmonth] && date(d) < $a[bday]))
{
echo date(Y) - $a[byear];
}
else
{
echo date(Y) - $a[byear] - 1;
}
Редактирано от $burov на
Re: проблем с date()
Не можеш да го направиш като използваш mktime, защото имаш следните ограничения:
Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970) and the time specified.
---
"Внимавай какво правиш през живота си, защото смъртта е вечна и не знаеш какво те очаква ..."
Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970) and the time specified.
---
"Внимавай какво правиш през живота си, защото смъртта е вечна и не знаеш какво те очаква ..."
Ето ти един малък пример
Това измислих за 20-ина минути, не е много тествано, но мисля че ще ти свърши работа :)))
<?php
$meseci = array("1"=>"31", "2"=>"28", "3"=>"31", "4"=>"30", "5"=>"31", "6"=>"30",
"7"=>"31", "8"=>"31", "9"=>"30", "10"=>"31", "11"=>"30", "12"=>"31");
$year = 1976;
$month = 12;
$day = 28;
$cDay = date(d);
$cMonth = date(m);
$cYear = date(Y);
if ($cDay < $day) {
$cDay = $cDay + $meseci[$month];
if ($cMonth == 1) {
$cMonth = 12;
--$cYear;
}
else {
--$cMonth;
};
};
// Пресмята деня
$day = $cDay - $day;
if ($cMonth < $month) {
$cMonth = $cMonth + 12;
--$cYear;
}
// Пресмята месеца
$month = $cMonth - $month;
// Пресмята годината
$year = $cYear - $year;
echo "Atakmim е на $year години, $month месеца и $day дни ;)";
?>
atakmim.fashion.bg
---
"Внимавай какво правиш през живота си, защото смъртта е вечна и не знаеш какво те очаква ..."
<?php
$meseci = array("1"=>"31", "2"=>"28", "3"=>"31", "4"=>"30", "5"=>"31", "6"=>"30",
"7"=>"31", "8"=>"31", "9"=>"30", "10"=>"31", "11"=>"30", "12"=>"31");
$year = 1976;
$month = 12;
$day = 28;
$cDay = date(d);
$cMonth = date(m);
$cYear = date(Y);
if ($cDay < $day) {
$cDay = $cDay + $meseci[$month];
if ($cMonth == 1) {
$cMonth = 12;
--$cYear;
}
else {
--$cMonth;
};
};
// Пресмята деня
$day = $cDay - $day;
if ($cMonth < $month) {
$cMonth = $cMonth + 12;
--$cYear;
}
// Пресмята месеца
$month = $cMonth - $month;
// Пресмята годината
$year = $cYear - $year;
echo "Atakmim е на $year години, $month месеца и $day дни ;)";
?>
atakmim.fashion.bg
---
"Внимавай какво правиш през живота си, защото смъртта е вечна и не знаеш какво те очаква ..."
Re: проблем с date()
zashto oshte na SQL nivo ne si izchislish vazrastta na usera.
SELECT ..., YEAR(NOW()) - YEAR(u.birthdate) as age , .... FROM user u, ......
There are only 10 types of people in this world: those who understand binary and those who don't
SELECT ..., YEAR(NOW()) - YEAR(u.birthdate) as age , .... FROM user u, ......
There are only 10 types of people in this world: those who understand binary and those who don't