猿问

如何生成YYYYMM0001这个格式的数字?

我需要生成一组由当前年份、当前月份和零前导的增量 4 位数字组成的数字。有条件:


最后 4 位数字是从数据库中的最后一条记录开始递增的。

例子:


 2020080023 -> last database record

 2020080024 -> so this is will be the next record

在月初,最后 4 位数字重置为 0001。

例子:


 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?


qq_花开花谢_0
浏览 95回答 2
2回答

呼唤远方

该解决方案需要最后格式化的 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)

繁星coding

获取最后一个记录月份并检查 $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;
随时随地看视频慕课网APP
我要回答