@SGaist I finally managed to reproduce the issue by changing my Windows time zone to Santiago! So mystery solved.
[image: 334c904f-ddc8-49fc-a9fc-9ed187ab0e5e.png]
Set to Santiago:
initial system locale= "en_GB"
QTimeZone::systemTimeZone()= QTimeZone("America/Santiago")
dt.toString( "03-09-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Jan 1 00:00:00 2023"
dt.toString( "04-09-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sat Jan 1 00:00:00 2022"
dt.toString( "05-09-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Fri Jan 1 00:00:00 2021"
QLocale::setDefault( QLocale( QLocale::English, QLocale::UnitedKingdom ) )
system locale= "en_GB"
dt.toString( "03-09-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Jan 1 00:00:00 2023"
dt.toString( "04-09-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sat Jan 1 00:00:00 2022"
dt.toString( "05-09-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Fri Jan 1 00:00:00 2021"
QLocale::setDefault( QLocale( QLocale::Spanish, QLocale::Chile ) )
system locale= "es_CL"
dt.toString( "03-09-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Jan 1 00:00:00 2023"
dt.toString( "04-09-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sat Jan 1 00:00:00 2022"
dt.toString( "05-09-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= false dt.toString()= ""
dt.toString( "01-01-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Fri Jan 1 00:00:00 2021"
Set to London:
initial system locale= "en_GB"
QTimeZone::systemTimeZone()= QTimeZone("Europe/London")
dt.toString( "03-09-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 3 00:00:00 2023"
dt.toString( "01-01-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Jan 1 00:00:00 2023"
dt.toString( "04-09-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 4 00:00:00 2022"
dt.toString( "01-01-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sat Jan 1 00:00:00 2022"
dt.toString( "05-09-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 5 00:00:00 2021"
dt.toString( "01-01-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Fri Jan 1 00:00:00 2021"
QLocale::setDefault( QLocale( QLocale::English, QLocale::UnitedKingdom ) )
system locale= "en_GB"
dt.toString( "03-09-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 3 00:00:00 2023"
dt.toString( "01-01-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Jan 1 00:00:00 2023"
dt.toString( "04-09-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 4 00:00:00 2022"
dt.toString( "01-01-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sat Jan 1 00:00:00 2022"
dt.toString( "05-09-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 5 00:00:00 2021"
dt.toString( "01-01-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Fri Jan 1 00:00:00 2021"
QLocale::setDefault( QLocale( QLocale::Spanish, QLocale::Chile ) )
system locale= "es_CL"
dt.toString( "03-09-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 3 00:00:00 2023"
dt.toString( "01-01-2023 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Jan 1 00:00:00 2023"
dt.toString( "04-09-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 4 00:00:00 2022"
dt.toString( "01-01-2022 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sat Jan 1 00:00:00 2022"
dt.toString( "05-09-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Sun Sep 5 00:00:00 2021"
dt.toString( "01-01-2021 0:00:00" , "dd-MM-yyyy H:mm:ss" ), dt.isValid()= true dt.toString()= "Fri Jan 1 00:00:00 2021"