Mam randkę w formacie Sun May 11,2014
. Jak przekonwertować go na 2014-05-11
JavaScript?
function taskDate(dateMilli) {
var d = (new Date(dateMilli) + '').split(' ');
d[2] = d[2] + ',';
return [d[0], d[1], d[2], d[3]].join(' ');
}
var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));
Powyższy kod daje mi ten sam format dat sun may 11,2014
. Jak mogę to naprawić?
javascript
date
formatting
date-format
time-format
użytkownik3625547
źródło
źródło
Odpowiedzi:
Możesz to zrobić:
Przykład użycia:
Wynik:
Demo na JSFiddle: http://jsfiddle.net/abdulrauf6182012/2Frm3/
źródło
'use strict';
@bhspencerPo prostu skorzystaj z wbudowanej
toISOString
metody, która dostosowuje datę do formatu ISO 8601:Gdzie twojaData jest twoim obiektem daty.
Edycja: jakiś facet napisał to, aby obsłużyć strefę czasową w komentarzach:
źródło
new Date(yourDateStr).toISOString().split('T')[0]
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0]
powinno to rozwiązać problem strefy czasowejnow.toISOString().substring(0,10);
Jest to czystsza alternatywa, ponieważ przypomina, żeYYYY-MM-DD
jest to pierwszych dziesięć znaków pełnego formatu ISO+ (offset
a- (offset
)Korzystam z tego sposobu, aby uzyskać datę w formacie rrrr-mm-dd :)
źródło
var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);
daje mi"2018-03-25"
. W innym systemievar todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);
daje mi"2018-03-27"
.Najprostszym sposobem przekonwertowania daty na format rrrr-mm-dd jest:
Jak to działa:
new Date("Sun May 11,2014")
konwertuje ciąg"Sun May 11,2014"
do obiektu daty reprezentującego czasSun May 11 2014 00:00:00
w strefie czasowej na podstawie bieżących ustawień regionalnych (ustawienia systemowe hosta)new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
konwertuje datę na obiekt daty odpowiadający czasowiSun May 11 2014 00:00:00
w UTC (czas standardowy), odejmując przesunięcie strefy czasowej.toISOString()
konwertuje obiekt daty na ciąg ISO 86012014-05-11T00:00:00.000Z
.split("T")
dzieli ciąg na tablicę["2014-05-11", "00:00:00.000Z"]
[0]
pobiera pierwszy element z tej tablicyPróbny
źródło
- (date.getTimezoneOffset() * 60000 )
Nieco powinno wyeliminować wszelkie różnice czasowej, w tym wpływu czasu letniego.Wynik:
źródło
eval
.return ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
Kombinacja niektórych odpowiedzi:
źródło
toISOString()
potencjalnych pułapek w strefie czasowej przy użyciu tej funkcji.Jeśli nie masz nic przeciwko korzystaniu z bibliotek, możesz po prostu użyć biblioteki Moments.js w następujący sposób:
źródło
Po prostu użyj tego:
Prosty i słodki;)
źródło
toISOString()
zakłada, że Twoja data to czas lokalny i konwertuje ją na UTC. Otrzymasz niepoprawny ciąg daty.Poniższa metoda powinna zwrócić to, czego potrzebujesz.
Źródło: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/
źródło
Pobierz rok, miesiąc i dzień, a następnie połącz je. Prosto, prosto i dokładnie.
źródło
Możesz użyć
toLocaleDateString('fr-CA')
naDate
obiekcieDowiedziałem się również, że te ustawienia regionalne dają prawidłowy wynik z listy ustawień regionalnych Lista wszystkich ustawień regionalnych i ich krótkie kody?
Pokaż fragment kodu
źródło
Aby uwzględnić strefę czasową, ten linijka powinna być dobra bez żadnej biblioteki:
źródło
Możesz spróbować: https://www.npmjs.com/package/timesolver
Użyj go w swoim kodzie:
Możesz uzyskać ciąg daty, używając tej metody:
źródło
Żadna z tych odpowiedzi mnie nie zadowoliła. Chciałem rozwiązania międzyplatformowego, które zapewniło mi dzień w lokalnej strefie czasowej bez korzystania z zewnętrznych bibliotek.
Oto co wymyśliłem:
To powinno zwrócić dzień daty, w formacie RRRR-MM-DD, w strefie czasowej, do której odnoszą się daty.
Na przykład
localDay(new Date("2017-08-24T03:29:22.099Z"))
wróci,"2017-08-23"
mimo że jest już 24 w UTC.Aby działał w programie Internet Explorer 8, musisz wypełnić plik Date.prototype.toISOString , ale powinien on być obsługiwany wszędzie indziej.
źródło
Sugeruję użycie czegoś takiego jak formatDate-js zamiast próbować go replikować za każdym razem. Wystarczy użyć biblioteki, która obsługuje wszystkie najważniejsze akcje strftime.
źródło
lub
Spróbuj tego!
źródło
Oto jeden ze sposobów, aby to zrobić:
źródło
Date.js jest do tego świetny.
źródło
źródło
źródło
źródło
Kilka poprzednich odpowiedzi było w porządku, ale nie były zbyt elastyczne. Chciałem czegoś, co naprawdę poradziłoby sobie z większą liczbą przypadków brzegowych, więc wziąłem odpowiedź @orangleliu i rozwinąłem ją. https://jsfiddle.net/8904cmLd/1/
Przykładowe użycie:
źródło
Pomogło mi to uzyskać bieżącą datę w żądanym formacie (RRRRMMDD GG: MM: SS):
źródło
Biblioteka nie jest potrzebna
Po prostu czysty JavaScript.
Poniższy przykład pokazuje ostatnie dwa miesiące od dzisiaj:
źródło
Format daty zgodny z PHP
Oto mała funkcja, która może przyjmować te same parametry co funkcja PHP
date()
i zwracać ciąg daty / godziny w JavaScript.Pamiętaj, że nie wszystkie opcje formatu date () z PHP są obsługiwane. Możesz rozszerzyć
parts
obiekt, aby utworzyć brakujący token formatuSens
Oto lista z zaktualizowaną wersją
formatDate()
funkcji i dodatkowymi przykładami: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9źródło
Kolejna kombinacja odpowiedzi. Ładnie czytelny, ale trochę długi.
źródło
Jeśli data musi być taka sama we wszystkich strefach czasowych, na przykład reprezentuje pewną wartość z bazy danych, pamiętaj, aby użyć wersji UTC dnia, miesiąca i funkcji pełnych funkcji na obiekcie daty JavaScript, ponieważ będzie to wyświetlane w czasie UTC i unikaj błędów typu „jeden po drugim” w niektórych strefach czasowych.
Co więcej, użyj biblioteki dat Moment.js do tego rodzaju formatowania.
źródło
Zmodyfikowałem odpowiedź Samit Satpute w następujący sposób:
źródło
Sformatuj i znajdź datę maksymalną i minimalną na podstawie danych mapowania:
źródło
Ponowne formatowanie ciągu daty jest dość proste, np
źródło