从字符串获取日期

时间:2019-11-09 12:21:21

标签: php laravel

我有一个像这样的字符串G5510ZCU1AQG2

QG的最后一个字母表示格式为2017-07的日期。

字母q代表年份。和g月份。

您不断计数字母以获得数字。

我想从这些字母中获取日期。

我试图做出switch声明,但是它没有帮助,并且有很多代码需要编写。

是否有更简单的方法从此字符串2017-07中获取日期为G5510ZCU1AQG2

对不起,我还在学习,没想到有用的东西

1 个答案:

答案 0 :(得分:1)

这是您可以执行的操作:

$str = "G5510ZCU1AQG2";

$year_letter = substr($str, -3, 1);
$month_letter = substr($str, -2, 1);

$year = 2000 + (ord($year_letter) - ord('A') + 1);
$month = ord($month_letter) - ord('A') + 1;

$date = sprintf("%02d-%d", $month, $year);

说明

  • 首先,我们使用substr找出年份和月份的字母。 传递-3和1表示“给我1个字母,该字母位于距离 结束”。
  • 然后,我们用ord()得到字母的ASCII码。将其与第一个字母A的ASCII码进行比较,就可以得到字母表中字母的编号(+1是因为它以1开头,而不是以0开头)
  • 现在我们知道值了,我们可以将日期获取为$month . "-" . $year。但是,这将给我们7-2017,我们希望前导零。这就是sprintf函数的用途:"%02d-%d的意思是“打印一个2位数,前导零,然后是减号,然后是一个数字。
  • 此代码的输出:"07-2017"

干杯。