El problema es que el horario de verano cambió y se envió 1 hora, el 16 de octubre de 2016 en su zona horaria:
$ zdump -v America/Sao_Paulo | awk '/Oct 16/ && /2016/'
America/Sao_Paulo Sun Oct 16 02:59:59 2016 UTC = Sat Oct 15 23:59:59 2016 BRT isdst=0
America/Sao_Paulo Sun Oct 16 03:00:00 2016 UTC = Sun Oct 16 01:00:00 2016 BRST isdst=1
Por lo tanto, cualquier momento entre ese día 00:00
y 00:59
el día se considera inválido en su zona horaria (pero puede ser válido en otros):
$ TZ=America/Sao_Paulo gdate -d '2016-10-16 0:59'
gdate: invalid date ‘2016-10-16 0:59’
$ TZ=Asia/Ho_Chi_Minh gdate -d '2016-10-16 0:59'
Sun Oct 16 00:59:00 ICT 2016
Puede establecer tiempo adicional, que no está en ese rango:
$ TZ=America/Sao_Paulo gdate -d '2016-10-16 1:00'
Sun Oct 16 01:00:00 BRST 2016
Lo anterior es el comportamiento de la fecha GNU.
La fecha BSD no tiene este problema. Si la fecha de entrada no es válida en la zona horaria, se ajustará silenciosamente hacia adelante 1 hora hasta que alcance una hora válida:
$ TZ=America/Sao_Paulo date -j -f '%Y%m%d%H%M' 201610160000
Sun Oct 16 01:00:53 BRST 2016
locale
s diferentes :sv_SE.utf8
yen_us.utf-8
.