为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
qq_花开花谢_0 2023-09-22 16:47:47
我需要生成一组由当前年份、当前月份和零前导的增量 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?
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

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


查看完整回答
反对 回复 2023-09-22
?
繁星coding

TA贡献1797条经验 获得超4个赞

获取最后一个记录月份并检查 $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;


查看完整回答
反对 回复 2023-09-22
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信