簡體   English   中英

在 PHP 中只比較沒有年份的日期和月份,例如出生日期

[英]Compare only day and month without year in PHP e.g. birth date

我只想將當前日期的日期和月份與訂閱日期的日期和月份進行比較。 例如:

current date(d-m) = 3-6

我想將它與任何其他dm進行比較
我應該如何在 PHP 中做到這一點在我的項目中,條件就像我們不比較年份的出生日期。

訣竅是讓月份先到。 這樣 PHP 可以按最高值比較數字。 看看下面的例子:

$aDate = DateTime::createFromFormat('m-d', '05-20');
$bDate = DateTime::createFromFormat('m-d', '06-29');

if ($aDate->format('md') > $bDate->format('md')) {
    echo "'aDate' is bigger than 'bDate'";
}

使用喜歡

$current_date = date("d-m");
$subscription = "03-06-2016";
$subscription_date  = date("d-m", strtotime($subscription));
if($current_date ==$subscription_date)
{
    echo "date is equal";
}else
{
    echo "date is not equal";
}

這可能會幫助你

$sdate = $row['subscription_date'];
$date1 = date("m-d");
$date2 = date("m-d",strtotime($sdate)) ;
if ($date1 == $date2) {

}

使用 DATE_FORMAT() 函數提取部分日期:

參考: http : //dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

SELECT * from table_name WHERE DATE_FORMAT(subscription_date, '%d-%m') = "05-05";

使用 DateTime() PHP 對象。

考慮到您有一個包含來自 mysql 查詢結果的用戶信息的數組:( $userData['suscriptionDate']

$today = new DateTime();

$userSuscription = new DateTime($userData['suscriptionDate']);

if ( $today->format('d') == $userSuscription->format('d') && $today->format('m') == $userSuscription->format('m')) {

    echo 'Congratulations!!';
}

我認為,更優雅的比較方式,尤其是當你有一個完整的日期與時間是Datetime類的diff函數:

$d1 = new Datetime();
$d2 = new Datetime('+3 months +2 days +3 hours');

$diff = $d1->diff($d2);
var_dump($diff->d); // 2
var_dump($diff->m); // 2
// or have a comparison as a string
var_dump($diff->format('Difference is in %R%a days'));
// output: Difference is in 63 days

享受! 鏈接到文檔

如果您只需要檢查jn日期是否與當前日期相同,那么您不需要進行多次函數調用。 因為您不是在比較大於或小於,所以輸入的格式並不重要。

代碼:(演示

$subscription = '29-11';
var_export(date("j-n") === $subscription);
// at the moment, the result is true
  • j是一個月中的今天沒有任何前導零和
  • n是今天的月份,沒有任何前導零。

暫無
暫無

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

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