Como posso converter a data normal 2012.08.10
em carimbo de data / hora unix em javascript?
Fiddle: http://jsfiddle.net/J2pWj/
Já vi muitos posts aqui que convertem em PHP, Ruby, etc ... Mas preciso fazer isso dentro de JS.
Como posso converter a data normal 2012.08.10
em carimbo de data / hora unix em javascript?
Fiddle: http://jsfiddle.net/J2pWj/
Já vi muitos posts aqui que convertem em PHP, Ruby, etc ... Mas preciso fazer isso dentro de JS.
unix timestamp
é tão fundamental para toda a engenharia e ciência da computação. Gostaria que houvesse um método de conveniência embutido. Atualmente estou usandoMath.floor((+new Date()) / 1000);
Respostas:
Verifique a documentação do JavaScript Date .
fonte
É importante adicionar o
toFixed(0)
para remover quaisquer decimais ao dividir por 1000 para converter de milissegundos em segundos.A
.getTime()
função retorna o carimbo de data / hora em milissegundos, mas os carimbos de data / hora unix verdadeiros estão sempre em segundos.fonte
Você deve verificar a api moment.js, é muito fácil de usar e tem muitos recursos integrados.
Acho que para o seu problema, você poderia usar algo assim:
fonte
fonte
Você pode simplesmente usar o operador + unário
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - procure em Datas.
fonte
/
já é um operador matemático. Além disso,toFixed
retorna uma string e não um número, caso o tipo seja importante.Você pode usar Date.parse () , mas os formatos de entrada que ele aceita dependem da implementação. No entanto, se você pode converter a data para o formato ISO (AAAA-MM-DD) , a maioria das implementações deve entendê-lo.
Consulte Por que Date.parse fornece resultados incorretos? .
fonte
Nesse caso, é importante retornar apenas um número inteiro (portanto, uma divisão simples não funcionará) e também retornar apenas os segundos realmente decorridos (é por isso que este código usa
Math.floor()
e nãoMath.round()
).fonte
Você pode fazer isso usando o método Date.parse ().
Date.parse ("03.03.2016") output-> 1456959600000
Date.parse ("2015-12-12") output-> 1449878400000
fonte
fonte
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.
Estou usando isso no NodeJS, e temos o fuso horário 'Austrália / Sydney'. Então, eu tive que adicionar isso no arquivo .env:
Acima é equivalente a:
fonte
converter timestamp em unix timestamp.
const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)
para obter o timestamp após a conversão
const TimeStamp = new Date(date*1000).getTime(); //1513787412000
fonte