Mam pole wprowadzania kalendarza początkowego i pole wprowadzania kalendarza końcowego. Chcemy, aby domyślne pole wprowadzania kalendarza początkowego 30 dni przed bieżącą datą i pole wprowadzania kalendarza końcowego było datą bieżącą. Oto moje vars randkowe.
var today = new Date(),
dd = today.getDate(),
mm = today.getMonth(),
yyyy = today.getFullYear(),
month = ["January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October" "November", "December"],
startdate = month[mm] + ", " + yyyy.toString();
Data końcowa byłaby podobna do var enddate = startdate - 30;
tej. Oczywiście to nie zadziała.
Jeśli więc aktualna data to 30 grudnia 2011 r., Chciałbym, aby data początkowa to 1 grudnia 2011 r.
EDYCJA: Odpowiedzi na moje pytanie ... w pewnym sensie. Date.today();
i Date.today().add(-30);
działa, ale potrzebuję daty w formacie January 13, 2012
. Nie Fri Jan 13 2012 10:48:56 GMT -055 (EST)
. Jakaś pomoc?
WIĘCEJ EDYCJI: W chwili pisania tego tekstu jest rok 2018. Wystarczy użyć Moment.js . To jest najlepsze.
źródło
Odpowiedzi:
Spróbuj użyć doskonałej biblioteki dat JavaScript Datejs (oryginał nie jest już obsługiwany, więc możesz być zainteresowany tym aktywnie utrzymywanym widelcem ):
Date.today().add(-30).days(); // or... Date.today().add({days:-30});
[Edytować]
Zobacz także doskonałą bibliotekę dat JavaScript Moment.js :
moment().subtract(30, 'days'); // or... moment().add(-30, 'days');
źródło
moment( moment().subtract(30, 'days') ).format("YYYY-MM-DD")
moment()
podejścia i dołączyłemtoDate()
metodę, aby odzyskać obiekt daty JavaScript. Dzięki!Spróbuj tego
var today = new Date() var priorDate = new Date().setDate(today.getDate()-30)
Jak zauważył @Neel, ta metoda zwraca w formacie znacznika czasu Javascript. Aby przekształcić go z powrotem w obiekt Date, musisz przekazać powyższe do nowego obiektu Date;
new Date(priorDate)
.źródło
new Date(priorDate)
setDate()
naDate
obiekcie. Nie można jednak zdiagnozować bez zobaczenia kodu.Oto brzydkie rozwiązanie dla Ciebie:
var date = new Date(new Date().setDate(new Date().getDate() - 30));
źródło
startDate = new Date(today.getTime() - 30*24*60*60*1000);
.getTime()
Metoda zwraca standardowy znacznik czasu JS (milisekund od stycznia 1/1970), w którym można wykorzystać regularne operacje matematyczne, które mogą być zasilane z powrotem do obiektu Date bezpośrednio.źródło
Uzyskaj następne 30 dni od dzisiaj
let now = new Date() console.log('Today: ' + now.toUTCString()) let next30days = new Date(now.setDate(now.getDate() + 30)) console.log('Next 30th day: ' + next30days.toUTCString())
Pobierz dzisiaj formularz z ostatnich 30 dni
let now = new Date() console.log('Today: ' + now.toUTCString()) let last30days = new Date(now.setDate(now.getDate() - 30)) console.log('Last 30th day: ' + last30days.toUTCString())
źródło
Javascript może sobie z tym poradzić bez żadnych zewnętrznych bibliotek.
var today = new Date(); var dateLimit = new Date(new Date().setDate(today.getDate() - 30)); document.write(today + "<br/>" + dateLimit)
źródło
Łatwy.
(Using Vanilla JS)
let days=30; this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
ISOFormat?
let days=30; this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
źródło
let today = new Date()
let last30Days = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30)
last30Days
będzie w obiekcie Dateźródło
Prosty 1 liniowy kod Vanilla Javascript :
const priorByDays = new Date(Date.now() - days * 24 * 60 * 60 * 1000)
Na przykład:
days = 7
Załóż aktualnydate = Fri Sep 18 2020 01:33:26 GMT+0530
Wynik byłby taki:
Fri Sep 11 2020 01:34:03 GMT+0530
znak czasu :
Date.now() - days * 24 * 60 * 60 * 1000
ISOString:
new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()
źródło
Używam date.js . Z łatwością sobie z tym radzi i dba o wszystkie paskudne lata przestępne.
źródło
Wolę moment js
startDate = moment().subtract(30, 'days').format('LL') // January 29, 2015 endDate = moment().format('LL'); // February 28, 2015
źródło
To jest wersja ES6
let date = new Date() let newDate = new Date(date.setDate(date.getDate()-30)) console.log(newDate.getMonth()+1 + '/' + newDate.getDate() + '/' + newDate.getFullYear() )
źródło
Możesz to zrobić po prostu za pomocą 1 linii kodu za pomocą momentu w Node JS. :)
let lastOneMonthDate = moment().subtract(30,"days").utc().toISOString()
Nie chcę formatu UTC, ŁATWIEJ: P
let lastOneMonthDate = moment().subtract(30,"days").toISOString()
źródło
Jeśli nie masz ochoty na momentjs, możesz użyć tego:
let x = new Date()
x.toISOString(x.setDate(x.getDate())).slice(0, 10)
Zasadniczo pobiera bieżącą datę (wartość liczbową daty bieżącego miesiąca), a następnie ustawia wartość. Następnie konwertuje do formatu ISO, z którego wycinam czystą datę numeryczną (tj. 2019-09-23)
Mam nadzieję, że to komuś pomoże.
źródło