Получить дату из строки - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть такая строка G5510ZCU1AQG2.

последние буквы QG представляют дату, отформатированную следующим образом 2017-07.

буква q представляет год. и g месяц.

вы продолжаете считать буквы, чтобы получить число.

Я хочу получить дату из этих букв.

Я пытался сделать switch, но это бесполезно, и есть много кода для записи.

есть более простой способ получить дату как 2017-07 из этой строки G5510ZCU1AQG2?

I 'извините, я все еще учусь и не могу придумать что-то полезное

1 Ответ

0 голосов
/ 09 ноября 2019

Вот как вы можете это сделать:

$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 букву, которая находится на расстоянии 3 от конца».
  • Затем мы получаем ASCII-код буквы с ord(). Сравнивая его с кодом ASCII первой буквы A, мы получаем номер буквы в алфавите (+1, потому что он начинается с 1, а не с 0)
  • Теперь, когда мы знаем значения, мы можем получитьдата как $month . "-" . $year. Тем не менее, это даст нам 7-2017, и мы хотим ведущий ноль. Для этого используется функция sprintf: "%02d-%d означает «напечатать двузначное число с начальным нулем, затем знак минус, затем цифру.
  • Вывод этого кода: "07-2017"

Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...