Memory Problem with Nano

when you omit all variants of sprintf_P and sprintf you might save some progmem.

Furthermore if you have a Nano with the "old Bootloader" you could flash your Nano with the UNO Bootloader - this will free 1500Bytes progmem.

replace the ENC with the W5100/W5500
write shorter text to Serial.

  tft.print(" ");
  sprintf(buffer, "%02u:%02u:%02u", hour(), minute(), second());
  tft.print(buffer);

may be you should start to use the "Streaming.h" lib from Mikal Hart.
Write a simple helper function for a two digit output of an integer and write just one print.

tft << ' ' << twoDigit(hour()) << ':' << twoDigit(minute()) << ':' << twoDigit(second());

get a larger Microcontroller :wink: