[英]How to generate this format number YYYYMM0001?
我需要生成一组数字,包括当前年份、当前月份和增量 4 位,前导为零。 有条件:
例子:
2020080023 -> last database record
2020080024 -> so this is will be the next record
例子:
2020080023 -> last database record on end of month
2020090001 -> so this is will be the next record
这是我到目前为止所拥有的:
$currentYear = date('Y');
$currentMonth = date('m');
$last4Digits = '0001';
$formatedNumber = $currentYear.$currentMonth.$last4Digits;
问题如何从最后一条记录中增加最后 4 位数字以及如何在月初重置为 0001?
获取最后记录月份并检查 $currentMonth 和 lastrecords 月份是否相同,如果相同,则增加当前 $last4Digits 否则设置 $last4Digits = '0001'
$currentYear = date('Y');
$currentMonth = date('m');
// last record from db
$db_last4Digits = //data from db;
$db_last4Digits_month = substr($db_last4Digits, 4, 2);
$db_last4Digits_month = substr($db_last4Digits, 6);
if($db_last4Digits_month == $currentMonth){
$last4Digits = '0001'; // set to 0001 if current month is not equal to last month
}else{
$last4Digits = substr($db_last4Digits, -4, 4); //get last 4 numbers
$last4Digits += $last4Digits ;
}
$formatedNumber = $currentYear.$currentMonth.$last4Digits;
该解决方案需要最后格式化的 ID 和一些逻辑。 如果最后一个 ID 在当前月份,则只需增加 1。如果不是这样,则新月份从 1 开始。
function getId($lastId){
$curYm = (int)date('Ym');
$lastYm = (int)($lastId/10000);
if($lastYm == $curYm) return ++$lastId;
return $curYm * 10000 + 1;
}
例子:
$id = 2020080007;
$nextId = getId($id); //int(2020080008)
$id = 2020070127;
$nextId = getId($id); // int(2020080001)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.