繁体   English   中英

如何生成这个格式号YYYYMM0001?

[英]How to generate this format number YYYYMM0001?

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

  1. 最后 4 位数字是从数据库上的最后一条记录递增的。

例子:

 2020080023 -> last database record
 2020080024 -> so this is will be the next record
  1. 在月初,最后 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?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM