Oprócz wszystkich odpowiedzi tutaj, de facto standardem obsługi daty / czasu js jest obecnie moment.js zaskoczył, że nikt o tym nie wspomniał
alonisser
2
@ alonisser - być może dlatego, że konwersja wartości czasu na datę jest banalna. Sformatowanie też nie jest szczególnie trudne.
RobG,
Odpowiedzi:
130
Wartość 1382086394000 jest prawdopodobnie wartością czasu, czyli liczbą milisekund od 1970-01-01T00: 00: 00Z. Możesz go użyć do utworzenia obiektu Date ECMAScript przy użyciu konstruktora Date :
var d = newDate(1382086394000);
To, jak przekonwertujesz to na coś czytelnego, zależy od Ciebie. Po prostu wysłanie go na wyjście powinno wywołać wewnętrzną (i całkowicie zależną od implementacji) metodę toString *, która zwykle wyświetla równoważny czas systemowy w postaci czytelnej dla człowieka, np.
Fri Oct 18201318:53:14 GMT+1000 (EST)
W ES5 jest kilka innych wbudowanych opcji formatowania:
i tak dalej. Należy pamiętać, że większość z nich zależy od implementacji i będzie się różnić w różnych przeglądarkach. Jeśli chcesz mieć ten sam format we wszystkich przeglądarkach, musisz samodzielnie sformatować datę, np .:
* Format Date.prototype.toString został ustandaryzowany w ECMAScript 2018 . Może minąć trochę czasu, zanim stanie się wszechobecny we wszystkich implementacjach, ale przynajmniej najpopularniejsze przeglądarki obsługują go teraz.
Istnieje również togmtstring (), ale jest przestarzały. Nie rozumiem, dlaczego jest tolocalestring () jak w JS, wszystko jest lokalne w przeglądarce. A może toLocaleString jest separacją do Nodejs? Jeśli używasz JS po stronie serwera, a strefa czasowa między klientem a serwerem jest inna, otrzymujesz strefę klienta?
Timo
1
@ timo - użycie „locale” jest błędną nazwą dla metody, która próbuje przedstawić format zgodny z preferencjami użytkownika dotyczącymi formatowania. Niestety opiera się na języku, który nie jest szczególnie dobrym wyznacznikiem preferowanego formatu. Lepiej byłoby formatować daty w oparciu o preferencje systemowe dotyczące formatowania daty, a nie na znacznie mniej szczegółowym kodzie języka.
RobG
32
To działa dobrze. Sprawdzone w chromeprzeglądarce:
Oto proste sposoby na wszelkie pomyłki w formacie daty:
na bieżącą datę:
var current_date=newDate();
aby uzyskać znacznik czasu aktualnej daty:
var timestamp=newDate().getTime();
aby przekonwertować określoną datę na znacznik czasu:
var timestamp_formation=newDate('mm/dd/yyyy').getTime();
aby przekonwertować znacznik czasu na datę:
var timestamp=newDate('02/10/2016').getTime();
var todate=newDate(timestamp).getDate();
var tomonth=newDate(timestamp).getMonth()+1;
var toyear=newDate(timestamp).getFullYear();
var original_date=tomonth+'/'+todate+'/'+toyear;
OUTPUT:
02/10/2016
tak @melpomene, połowa kodu jest nieistotna, ale napisałem to, aby wyjaśnić dalsze wątpliwości dotyczące tworzenia dat .. !!! i jeszcze jedno, nie skopiowałem go skądkolwiek. Wypróbowałem to we własnym kodzie i 2 dni temu pracowałem nad tym
Trojan
1
Nie ma znaczenia, czy skopiowałeś go dosłownie, czy nie. Chodzi o to, że wszystkie informacje są już zawarte w innej odpowiedzi. Nawiasem mówiąc, twój ostatni przykład tak naprawdę nie daje rezultatów, które według ciebie robią.
melpomene
Pokazane dane wyjściowe w rzeczywistości nie są zgodne z kodem wyjściowym (10.02.2016)
Suyash Mittal,
9
musimy stworzyć nową funkcję za pomocą JavaScript.
Oto, co zrobiłem dla API instagramu. przekonwertowany znacznik czasu metodą daty przez pomnożenie przez 1000, a następnie dodanie wszystkich jednostek indywidualnie, takich jak (rok, miesiące itp.)
utworzył niestandardową nazwę listy miesięcy i zmapował go getMonth()metodą, która zwraca indeks miesiąca.
Odpowiedzi:
Wartość 1382086394000 jest prawdopodobnie wartością czasu, czyli liczbą milisekund od 1970-01-01T00: 00: 00Z. Możesz go użyć do utworzenia obiektu Date ECMAScript przy użyciu konstruktora Date :
var d = new Date(1382086394000);
To, jak przekonwertujesz to na coś czytelnego, zależy od Ciebie. Po prostu wysłanie go na wyjście powinno wywołać wewnętrzną
(i całkowicie zależną od implementacji)metodę toString *, która zwykle wyświetla równoważny czas systemowy w postaci czytelnej dla człowieka, np.Fri Oct 18 2013 18:53:14 GMT+1000 (EST)
W ES5 jest kilka innych wbudowanych opcji formatowania:
i tak dalej. Należy pamiętać, że większość z nich zależy od implementacji i będzie się różnić w różnych przeglądarkach. Jeśli chcesz mieć ten sam format we wszystkich przeglądarkach, musisz samodzielnie sformatować datę, np .:
alert(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());
* Format Date.prototype.toString został ustandaryzowany w ECMAScript 2018 . Może minąć trochę czasu, zanim stanie się wszechobecny we wszystkich implementacjach, ale przynajmniej najpopularniejsze przeglądarki obsługują go teraz.
źródło
To działa dobrze. Sprawdzone w
chrome
przeglądarce:var theDate = new Date(timeStamp_value * 1000); dateString = theDate.toGMTString(); alert(dateString );
źródło
1000
. W przeciwnym razie przeniesiesz się w przyszłą przestrzeń !!dlaczego nie po prostu
new Date (timestamp);
Data to data, a jej formatowanie to inna sprawa.
źródło
Moment.js może konwertować znaczniki czasu unixa do dowolnego formatu niestandardowego
W tym przypadku :
var time = moment(1382086394000).format("DD-MM-YYYY h:mm:ss");
wydrukuje
18-10-2013 11:53:14
;Oto plunker, który to demonstruje.
źródło
Oto proste sposoby na wszelkie pomyłki w formacie daty:
na bieżącą datę:
var current_date=new Date();
aby uzyskać znacznik czasu aktualnej daty:
var timestamp=new Date().getTime();
aby przekonwertować określoną datę na znacznik czasu:
var timestamp_formation=new Date('mm/dd/yyyy').getTime();
aby przekonwertować znacznik czasu na datę:
var timestamp=new Date('02/10/2016').getTime(); var todate=new Date(timestamp).getDate(); var tomonth=new Date(timestamp).getMonth()+1; var toyear=new Date(timestamp).getFullYear(); var original_date=tomonth+'/'+todate+'/'+toyear; OUTPUT: 02/10/2016
źródło
musimy stworzyć nową funkcję za pomocą JavaScript.
function unixTime(unixtime) { var u = new Date(unixtime*1000); return u.getUTCFullYear() + '-' + ('0' + u.getUTCMonth()).slice(-2) + '-' + ('0' + u.getUTCDate()).slice(-2) + ' ' + ('0' + u.getUTCHours()).slice(-2) + ':' + ('0' + u.getUTCMinutes()).slice(-2) + ':' + ('0' + u.getUTCSeconds()).slice(-2) + '.' + (u.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) }; console.log(unixTime(1370001284)) 2016-04-30 08:36:26.000
źródło
formatDate
to funkcja, którą możesz wywołać i przekazać datę, do której chcesz sformatowaćdd/mm/yyyy
var unformatedDate = new Date("2017-08-10 18:30:00"); $("#hello").append(formatDate(unformatedDate)); function formatDate(nowDate) { return nowDate.getDate() +"/"+ (nowDate.getMonth() + 1) + '/'+ nowDate.getFullYear(); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="hello"> </div>
źródło
Oto, co zrobiłem dla API instagramu. przekonwertowany znacznik czasu metodą daty przez pomnożenie przez 1000, a następnie dodanie wszystkich jednostek indywidualnie, takich jak (rok, miesiące itp.)
utworzył niestandardową nazwę listy miesięcy i zmapował go
getMonth()
metodą, która zwraca indeks miesiąca.convertStampDate(unixtimestamp){ // Unixtimestamp // Months array var months_arr = ['January','February','March','April','May','June','July','August','September','October','November','December']; // Convert timestamp to milliseconds var date = new Date(unixtimestamp*1000); // Year var year = date.getFullYear(); // Month var month = months_arr[date.getMonth()]; // Day var day = date.getDate(); // Hours var hours = date.getHours(); // Minutes var minutes = "0" + date.getMinutes(); // Seconds var seconds = "0" + date.getSeconds(); // Display date time in MM-dd-yyyy h:m:s format var fulldate = month+' '+day+'-'+year+' '+hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2); // filtered fate var convdataTime = month+' '+day; return convdataTime; }
Zadzwoń z argumentem pieczęci
convertStampDate('1382086394000')
i to wszystko.
źródło
Mój wariant ES6 tworzy taki łańcuch
2020-04-05_16:39:45.85725
. Możesz zmodyfikować instrukcję zwrotu, aby uzyskać wymagany format:const getDateStringServ = timestamp => { const plus0 = num => `0${num.toString()}`.slice(-2) const d = new Date(timestamp) const year = d.getFullYear() const monthTmp = d.getMonth() + 1 const month = plus0(monthTmp) const date = plus0(d.getDate()) const hour = plus0(d.getHours()) const minute = plus0(d.getMinutes()) const second = plus0(d.getSeconds()) const rest = timestamp.toString().slice(-5) return `${year}-${month}-${date}_${hour}:${minute}:${second}.${rest}` }
źródło
Aby obliczyć datę w znaczniku czasu z podanej daty
// Aby uzyskać datę znacznika czasu z normalnej daty : W formacie - 1560105000000
// data wprowadzenia może mieć format: „2019-06-09T18: 30: 00.000Z”
this.calculateDateInTimestamp = function (inputDate) { var date = new Date(inputDate); return date.getTime(); }
wyjście : 1560018600000
źródło