Czy ktoś wie o łatwym sposobie umawiania się na randki (np. Dzisiaj) i cofania się o X dni?
Na przykład, jeśli chcę obliczyć datę 5 dni przed dzisiaj.
javascript
date
datetime
jonhobbs
źródło
źródło
Odpowiedzi:
Wypróbuj coś takiego:
Zauważ, że modyfikuje to obiekt daty i zwraca wartość czasu zaktualizowanej daty.
źródło
new Date(new Date().setDate(new Date().getDate()-5))
- to będzie 5 dni temu. W przykładzie odpowiedzi przekaż ją do nowej daty, aby uzyskać obiekt daty. Właśnienew Date(d)
tego chcesz.setDate(-1)
wyznaczy datę ostatniego dnia miesiącatoString
metod, takich jaktoISOString
,toDateString
itpJeśli wykonujesz wiele kłopotliwych manipulacji datami w swojej aplikacji internetowej, DateJS znacznie ułatwi Ci życie:
http://simonwillison.net/2007/Dec/3/datejs/
źródło
getTime()
isetTime()
są milisekundami od epoki. Nie powinno mieć znaczenia, czy czas przekroczy granicę roku.Wygląda to mniej więcej tak:
źródło
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
następnievar daysAgo45 = getDaysAgo(45);
Zauważyłem, że getDays + X nie działa w granicach dnia / miesiąca. Korzystanie z getTime działa tak długo, jak twoja data nie jest wcześniejsza niż 1970.
źródło
get moment.js. Korzystają z niego wszystkie fajne dzieciaki. Ma więcej opcji formatowania itp. Gdzie
Opcjonalny! Konwertuj na JS Data obj w celu powiązania kątowego.
Opcjonalny! Format
źródło
Zrobiłem ten prototyp dla Date, aby móc przekazywać wartości ujemne, aby odjąć dni, a wartości dodatnie, aby dodać dni.
Aby go użyć, mogę po prostu napisać:
źródło
d.setDate(d.getDate() + days)
zarówno wartości dodatnich, jak i ujemnych dla dni, aby odpowiednio dodawać i odejmować dni. Powinien on działać na instancji (podobnie jak inne metody Date), a nie tworzyć i zwracać kopii.Kilka istniejących rozwiązań było blisko, ale niezupełnie tego, czego chciałem. Ta funkcja działa zarówno z wartościami dodatnimi, jak i ujemnymi i obsługuje przypadki graniczne.
źródło
Lubię robić matematyki w milisekundach. Więc użyj
Date.now()
a jeśli ci się podoba to sformatowane
UWAGA:
Date.now()
nie działa w starszych przeglądarkach (np. Myślę, że IE8).Polyfill tutaj .AKTUALIZACJA Czerwiec 2015
@socketpair zwrócił uwagę na moją niechlujność. Jak mówi: „Pewnego dnia w roku mają 23 godziny, a około 25 ze względu na reguły strefy czasowej”.
Aby rozwinąć tę kwestię, powyższa odpowiedź będzie zawierała niedokładności dotyczące czasu letniego w przypadku, gdy chcesz obliczyć LOKALNY dzień 5 dni temu w strefie czasowej ze zmianami czasu letniego, a Ty
Date.now()
daje bieżący LOKALNY czas teraz, lub.toString()
które zwraca lokalną datę i dlatego jest niezgodne zDate.now()
datą podstawową w UTC.Działa to jednak, jeśli robisz matematykę w UTC, np
A. Chcesz mieć datę UTC 5 dni temu od TERAZ (UTC)
B. Zaczynasz z datą bazową UTC inną niż „teraz”, używając
Date.UTC()
źródło
Znalazłem problem z metodą getDate () / setDate () polegającą na tym, że zbyt łatwo zamienia wszystko w milisekundy, a czasem trudno jest mi przestrzegać składni.
Zamiast tego chciałbym zrezygnować z faktu, że 1 dzień = 86 400 000 milisekund.
Zatem w przypadku konkretnego pytania:
Działa jak marzenie.
Cały czas używam tej metody do wykonywania ciągłych obliczeń na 30/60/365 dni.
Możesz łatwo ekstrapolować to, aby stworzyć jednostki czasu dla miesięcy, lat itp.
źródło
podziel datę na części, a następnie zwróć nową datę ze skorygowanymi wartościami
Pamiętaj, że miesiące liczone są od zera, ale dni nie. tj. nowa data (2009, 1, 1) == 01 lutego 2009 r., nowa data (2009, 1, 0) == 31 stycznia 2009 r .;
źródło
Bez korzystania z drugiej zmiennej możesz zastąpić 7 przez wstecz x dniami:
źródło
źródło
Utworzyłem funkcję do manipulowania datami. możesz dodawać lub odejmować dowolną liczbę dni, godzin, minut.
Teraz wywołaj tę funkcję, przekazując parametry. Na przykład tutaj jest wywołanie funkcji umożliwiające uzyskanie daty przed 3 dniami od dzisiaj.
źródło
źródło
Najlepsze odpowiedzi doprowadziły do błędu w moim kodzie, w którym pierwszego miesiąca ustawiałaby przyszłą datę w bieżącym miesiącu. Oto co zrobiłem
źródło
Łatwym sposobem na zarządzanie datami jest użycie Moment.js
Możesz użyć
add
. PrzykładDokumenty http://momentjs.com/docs/#/manipicing/add/
źródło
Lubię następujące, ponieważ jest to jedna linia. Nie idealny ze zmianami DST, ale zwykle wystarczająco dobry dla moich potrzeb.
źródło
dla mnie wszystkie kombinacje działały dobrze z poniższym fragmentem kodu, fragment jest przeznaczony do implementacji Angular-2, jeśli chcesz dodać dni, przekazać dodatnią liczbę dni, jeśli chcesz odjąć przekazać liczbę ujemną dni
źródło
Mam dobry przebieg z date.js:
http://www.datejs.com/
Miły!
Strona zawiera to piękno:
źródło
Jeśli chcesz odjąć liczbę dni i sformatować datę w formacie czytelnym dla człowieka, powinieneś rozważyć utworzenie niestandardowego
DateHelper
obiektu, który wygląda mniej więcej tak:(zobacz także to skrzypce )
źródło
Zobacz poniższy kod, odejmij dni od bieżącej daty. Ustaw także miesiąc zgodnie z odjętą datą.
źródło
Podczas ustawiania daty data jest konwertowana na milisekundy, więc musisz przekonwertować ją z powrotem na datę:
Ta metoda uwzględnia również zmianę nowego roku itp.
źródło
Możesz używać Javascript.
Dla PHP
Mam nadzieję, że ci to pomoże.
źródło
Przeliczyłem na milisekundę i odliczyłem dni, w przeciwnym razie miesiąc i rok nie zmienią się i nie będą logiczne
Nadzieja pomaga
źródło
źródło
Używanie nowoczesnej składni funkcji JavaScript
źródło
Spróbuj czegoś takiego
currDate może być dowolną datą
limit może być różnicą liczby dni (dodatnia dla przyszłości i ujemna dla przeszłości)
źródło
To daje wynik z ostatnich 10 dni 110% pracy nie dostaniesz żadnego rodzaju problemu
możesz zmienić dni odejmowania zgodnie ze swoimi wymaganiami
źródło
źródło
źródło