Jak mogę przekonwertować normalną datę 2012.08.10
na uniksowy znacznik czasu w javascript?
Fiddle: http://jsfiddle.net/J2pWj/
Widziałem tutaj wiele postów, które konwertują to na PHP, Ruby itp ... Ale muszę to zrobić w JS.
Jak mogę przekonwertować normalną datę 2012.08.10
na uniksowy znacznik czasu w javascript?
Fiddle: http://jsfiddle.net/J2pWj/
Widziałem tutaj wiele postów, które konwertują to na PHP, Ruby itp ... Ale muszę to zrobić w JS.
unix timestamp
jest to fundamentalne dla całej inżynierii i informatyki. Szkoda, że nie ma wbudowanej wygodnej metody. Obecnie używamMath.floor((+new Date()) / 1000);
Odpowiedzi:
new Date('2012.08.10').getTime() / 1000
Sprawdź dokumentację JavaScript Date .
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
Ważne jest, aby dodać toFixed(0)
kropkę, aby usunąć wszelkie ułamki dziesiętne podczas dzielenia przez 1000 w celu konwersji z milisekund na sekundy.
.getTime()
Zwraca znacznik czasu w milisekundach, ale prawdziwe znaczników czasu Uniksa są zawsze w ciągu kilku sekund.
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch
Możesz po prostu użyć jednoargumentowego operatora +
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - spójrz pod Daty.
/
jest już operatorem matematycznym. Ponadto, toFixed
zwraca ciąg znaków, a nie liczba, w przypadku, gdy typ jest ważne ..
Możesz użyć Date.parse () , ale formaty wejściowe, które akceptuje, są zależne od implementacji. Jeśli jednak możesz przekonwertować datę na format ISO (RRRR-MM-DD) , większość implementacji powinna to zrozumieć.
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
W tym przypadku ważne jest, aby zwracać tylko liczbę całkowitą (więc zwykłe dzielenie nie wystarczy), a także zwracać tylko faktycznie upływające sekundy (dlatego ten kod używa, Math.floor()
a nie Math.round()
).
Możesz to zrobić za pomocą metody Date.parse ().
Date.parse($("#yourCustomDate).val())
Date.parse ("03.03.2016") output-> 1456959600000
Date.parse ("2015-12-12") output-> 1449878400000
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
Po porównaniu znacznika czasu z tym z PHP, żadna z powyższych nie wydaje się poprawna dla mojej strefy czasowej. Poniższy kod dał mi taki sam wynik jak PHP, który jest najważniejszy dla projektu, który robię.
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);
Używam tego na NodeJS i mamy strefę czasową „Australia / Sydney”. Musiałem więc dodać to do pliku .env:
TZ = 'Australia/Sydney'
Powyższe jest równoważne z:
process.env.TZ = 'Australia/Sydney'