计算给定年份和季度是之前还是之后的可靠方法


Reliable way to work out if a given year and quarter are before or after another?

例如给定:

$quarter1 = 4;
$year1 = 2011;
$quarter2 = 3;
$year2 = 2012;

我需要知道,与第一组相比,第二组是未来的。

我确实认为这可以通过将季度附加到年份来完成。

例如
$qy1 = 20114;
$qy2 = 20123;
// $qy1 < $qy2

但我敢肯定这不是比较两者的可靠方法。有没有更好、更可靠的方法?

非常感谢

你的方法没有任何问题,除了必须做一些字符串连接和类型转换回 int。但是,如果您未能将值强制恢复为整数,并且您正在比较具有不同字符串长度的年份,则可能会失败,例如:

$date1 = '9994';  // year 999, q4
$date2 = '10011'; // year 1001, q1
字符串

9994 将比较为大于字符串 10011。

纯粹作为替代方案,这也可以工作,保持纯数字:

$date1 = $year1 + (($quarter1 - 1) / 4);
$date2 = $year2 + (($quarter2 - 1) / 4);
if ($date1 < $date2) { ... }

是的,我确实认为这是最好、最简单、最快捷的方法。

if($year1<$year2 || $year1==$year2 && $quarter1<$quarter2)
    echo "Date1 is before Date2!";
else
    echo "Date1 is NOT before Date2!";