Tommy56:
Ab welcher Stelle oder sollen wir da jetzt suchen?
Die Stelle nennt sich treffenderweise "// ab hier ist noch Nachbesserung angesagt". 
Zurück zum Thema:
Ich versuche die Zeit, die per DCF-Library erfolgreich gefunden wurde, aus den variablen tm.Hour usw. in einen String (Char[]) zu packen, damit ich diesen dann in der Displayausgabe der u8g2-Library verwenden kann.
tm.Hour und die anderen Werte sind vom typ uint8_t, soweit es den Compiler an geht und ich es in der Library nachvollziehen konnte. Meine Ausgabefunktion "showScreen()" erwartet char[] weil das auch "u8g2.drawStr()" so möchte, womit ich den Text am ende auf den Display bringe. Soweit ich das richtig verstanden habe.
Das uint8_t die Abkürzung für unsigned int ist habe ich schon bemerkt doch die 8 steht für 8bit oder nicht?
Problem ist also welche 8bit der 16bit eines unsigned int sind es, die oberen oder unteren?
Genügt schiften oder muss ich doch etwas anderes versuchen?
Wie übergibt man uint8_t in ein char[]?
Mit "(char)tm.Hour" hat es schon mal nicht funktioniert.
Auch "(byte)tm.Hour" hilft nichts.
Da fehlt mir wohl irgend welches Grundlagenwissen. 
-------Nachtag-------
Jetzt hab ich etwas zum laufen bekommen.
Leider werden jetzt nur noch 5 Zeichen pro Zeile angezeigt (auf dem Display).
Für heute ist es genug, ich geh ins Bett.
#include <U8g2lib.h> // https://github.com/olikraus/u8g2
#include <Wire.h> // für i2c (Display/RTC)
#include <DCF77.h> // https://www.arduinolibraries.info/libraries/dcf77
#include <TimeLib.h> // https://github.com/PaulStoffregen/Time
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);
// 5x "u8g2_font_pixelle_micro_tr"
// 7x "u8g2_font_profont11_tr"
// 7x "u8g2_font_finderskeepers_tr"
// 10x "u8g2_font_crox2tb_tr"
// 12x "u8g2_font_helvB12_tr"
#define DCF_PIN 3 // muss interrupt fähig sein
time_t time;
time_t DCFtime = 0;
DCF77 DCF = DCF77(DCF_PIN,digitalPinToInterrupt(DCF_PIN));
bool dcfSyncNowMSG = true;
bool dcfSyncOK = false;
void setup() {
Serial.begin(9600);
u8g2.begin();
u8g2.setFont(u8g2_font_finderskeepers_tr);
showScreen(1,"Willkommen");
u8g2.sendBuffer();
DCF.Start();
delay(1000);
}
void loop() {
if (!dcfSyncOK){
if (DCFtime!=0) {
u8g2.clearBuffer();
showScreen(1,"DCF Sync. OK");
digitalClockDisplay(DCFtime);
dcfSyncOK = true;
}
else{
DCFtime = DCF.getTime();
if (dcfSyncNowMSG){
u8g2.clearBuffer();
showScreen(1,"DCF Sync. ...");
dcfSyncNowMSG = false;
}
}
delay(1000);
}
}
void showScreen(int line, char msg[]) {
if (line == 1){
u8g2.drawStr(0,8,msg); // (1-128,1-32,"")
}
if (line == 2){
u8g2.drawStr(0,16,msg);
}
if (line == 3){
u8g2.drawStr(0,24,msg);
}
if (line == 4){
u8g2.drawStr(0,32,msg);
}
u8g2.sendBuffer();
}
void digitalClockDisplay(time_t _time){
tmElements_t tm;
breakTime(_time, tm);
u8g2.clearBuffer();
String tString = "Uhrzeit: " + String(tm.Hour, DEC) + ":" + String(printDigits(tm.Minute), DEC) + ":" + String(printDigits(tm.Second), DEC);
char outData[sizeof(tString)];
tString.toCharArray(outData, sizeof(tString));
Serial.println(outData);
showScreen(1,outData);
tString = "Datum: " + String(tm.Day, DEC) + "." + String(tm.Month, DEC) + "." + String((tm.Year+1970), DEC);
outData[sizeof(tString)];
tString.toCharArray(outData, sizeof(tString));
Serial.println(outData);
showScreen(2,outData);
}
int printDigits(int digits){
if(digits < 10)
if (digits == 0){
return(0,0);
}
else{
return(0);
}
return(digits);
}