Depois de comparar o carimbo de data / hora com o do PHP, nenhuma das opções acima parece correta para meu fuso horário. O código abaixo me deu o mesmo resultado do PHP, que é o mais importante para o projeto que estou fazendo.
function getTimeStamp(input) {
var parts = input.trim().split(' ');
var date = parts[0].split('-');
var time = (parts[1] ? parts[1] : '00:00:00').split(':');
// NOTE:: Month: 0 = January - 11 = December.
var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
return d.getTime() / 1000;
}
// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');
console.log(start + ' - ' + end);
Estou usando isso no NodeJS, e temos o fuso horário 'Austrália / Sydney'. Então, eu tive que adicionar isso no arquivo .env:
TZ = 'Australia/Sydney'
Acima é equivalente a:
process.env.TZ = 'Australia/Sydney'