簡體   English   中英

試着計算下一個生日的天數

[英]Trying to calculate days to next birthday

我有這個腳本計算天,直到有人的下一個生日(這可能是一個更好的方式)但是無論如何,如果有人的生日是3天前,我希望它給我362天,直到下一個生日,但它給-3代替。 沒問題,添加365天以獲得正確的答案,但它根本不起作用,我無法解決為什么...代碼:

$resultcurdate = mysql_query("select curdate()",$db);

    $curdate = mysql_fetch_array($resultcurdate);

    $curdate1 = explode('-', $curdate[0]);
    $day1   = $curdate1[2];
    $month1 = $curdate1[1];
    $year1  = $curdate1[0];

    $birthdate = explode('-', $databack10[birthday]);
    $day   = $birthdate[2];
    $month = $birthdate[1];
    $year  = $birthdate[0];

    $year = $year1;

    if ($month1>$month){$year=$year+1;}

    $birthdate5 = $year."-".$month."-".$day;

    $resultdate = mysql_query("select datediff('$birthdate5', now())",$db);

    $databackdate = mysql_fetch_array($resultdate);

    if($databackdate < '0'){$databackdate = (365 + $databackdate); }

任何想法為什么這不起作用?

有沒有辦法用SQL查詢執行此操作? 生日是日期字段類型。

select 
date_field,
abs(if(right(curdate(),5) >= right(date_field,5),
datediff(curdate(),concat(year(curdate()+ interval 1 year),right(date_field,6))) ,
datediff(concat(year(curdate()),right(date_field,6)),curdate()))) as days
from table

代碼較少的備用代碼:

select 365.25 - ( TIMESTAMPDIFF(day, '1974-02-28', CURDATE()) mod 365.25 ) AS days_till_birthday

說明:
1.以天為單位獲取當前年齡:
TIMESTAMPDIFF(day, '1974-02-28', CURDATE())

2.獲取自上次生日以來的天數,將當前年齡除以365.25並得到余數:
(TIMESTAMPDIFF(day, '1974-02-28', CURDATE()) mod 365.25)

3.從365.25中減去余數,看看生日前剩余的天數:
365.25 - (TIMESTAMPDIFF(day, '1974-02-28', CURDATE()) mod 365.25)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM