我有一个像这样的字符串G5510ZCU1AQG2
。
QG
的最后一个字母表示格式为2017-07
的日期。
字母q
代表年份。和g
月份。
您不断计数字母以获得数字。
我想从这些字母中获取日期。
我试图做出switch
声明,但是它没有帮助,并且有很多代码需要编写。
是否有更简单的方法从此字符串2017-07
中获取日期为G5510ZCU1AQG2
?
对不起,我还在学习,没想到有用的东西
答案 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"
干杯。