TimeLib library functions

I started with Unix time input: 1565110061 (Feb 18 201917:47:41)
(here you could test the unixtime format https://www.epochconverter.com)

Why do you assume that breakTime() is broken? It is equally likely that the conversion of your date/time to a time_t is what is flawed.

1565110061
Is equivalent to:
08/06/2019 @ 4:47pm (UTC)

Time Library makeTime() and breakTime() handles that value and any other unix time stamp correctly

#include <TimeLib.h>
tmElements_t tm;
time_t t;

void setup() {
  Serial.begin(115200);
  t = 1565110061;
  breakTime(t, tm);
  setTime(makeTime(tm));
  display_Time();
}

void loop() { }

void display_Time(void)
{
  Serial.print("Time.h library configured Time = ");
  Serial.print(hour());
  Serial.write(':');
  print2digits(minute());
  Serial.write(':');
  print2digits(second());
  Serial.print(", Date (D/M/Y) = ");
  Serial.print(day());
  Serial.print('/');
  Serial.print(month());
  Serial.print('/');
  Serial.print(year());
  Serial.println();
  Serial.print("Unix Time ");
  t = now();
  Serial.println(t);
  Serial.println();
}
void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);
}