using snprintf_P in function

char* format_tA(char* t_bufA, time_t tA){
  snprintf_P(t_bufA,sizeof(t_bufA),PSTR("%d:%02d:%02d %s %s %d, %4d"),
             hourFormat12(tA),minute(tA),second(tA),(isPM(tA) ? "PM" : "AM"),
             monthShortStr(month(tA)),day(tA),year(tA));
  return t_bufA;
}

Passing a pointer to some memory to the function means that the function can modify the memory pointed to. Why you then need to return that pointer is mystery.