繁体   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