How to pass string values to integers

Not really a fan of the String Classfor arduino...

Here's my take on it:

struct fechaHora {
  uint16_t year;
  uint8_t month;
  uint8_t day;
  uint8_t hour;
  uint8_t minute;
  uint8_t second;
  char valid;
};


int str2num(char *str, const int len) {
  char temp[len + 1];

  memcpy (temp, str, len);
  temp[len] = '\0';

  return atoi(temp);
}

void setup() {
  struct fechaHora dateTime;

  char bufferRX[] = "$DT 20211028225443,V*46";

  dateTime.year = str2num(&bufferRX[4], 4);
  dateTime.month = str2num(&bufferRX[8], 2);
  dateTime.day = str2num(&bufferRX[10], 2);
  dateTime.hour = str2num(&bufferRX[12], 2);
  dateTime.minute = str2num(&bufferRX[14], 2);
  dateTime.second = str2num(&bufferRX[16], 2);
  dateTime.valid = bufferRX[19];

  Serial.println(dateTime.year);
  Serial.println(dateTime.month);
  Serial.println(dateTime.day);
  Serial.println(dateTime.hour);
  Serial.println(dateTime.minute);
  Serial.println(dateTime.second);
  Serial.println(dateTime.valid);
}

void loop() {
  //nothing here (for now!)
}

Hope that helps...