Stworzyłem ten skrypt, aby obliczyć datę z 10-dniowym wyprzedzeniem w formacie dd / mm / rrrr:
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
Potrzebuję, aby data pojawiła się z zerami wiodącymi w komponencie dnia i miesiąca, poprzez dodanie tych reguł do skryptu. Nie mogę sprawić, żeby zadziałało.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
i
if (MyDate.getDate <10)get.Date = '0' + getDate;
Gdyby ktoś mógł mi pokazać, gdzie wstawić je do skryptu, byłbym bardzo wdzięczny.
javascript
date
date-format
time-format
leading-zero
Julian Coates
źródło
źródło
Odpowiedzi:
Spróbuj tego: http://jsfiddle.net/xA5B7/
EDYTOWAĆ:
Aby to wyjaśnić,
.slice(-2)
podaje nam dwa ostatnie znaki ciągu.Bez względu na wszystko, możemy dodać
"0"
do dnia lub miesiąca i po prostu poprosić o dwa ostatnie, ponieważ zawsze są to dwa, których chcemy.Więc jeśli
MyDate.getMonth()
zwroty9
będą:więc dodanie
.slice(-2)
tego daje nam ostatnie dwa znaki, które są:Ale jeśli
MyDate.getMonth()
powróci10
, będzie to:więc dodanie
.slice(-2)
daje nam dwa ostatnie znaki lub:źródło
MyDate.setDate(MyDate.getDate() + 20);
slice()
technika w zaakceptowanej odpowiedzi jest o 1/10 sekundy szybsza niż technika @Alerosspad()
na 1 milion iteracji. jsFiddle . „zapłać pieniądze, wybierz coś”.Oto przykład z dokumentacji obiektu Date w sieci Mozilla Developer Network przy użyciu niestandardowej funkcji „pad”, bez konieczności rozszerzania prototypu JavaScript w języku Number. Przydatną funkcją, którą dają jako przykład, jest
A poniżej jest używany w kontekście.
źródło
pad
wyprowadza tylko ciągi.Nowym nowoczesnym sposobem na to jest użycie
toLocaleDateString
, ponieważ nie tylko pozwala on sformatować datę z odpowiednią lokalizacją, ale nawet przekazać opcje formatowania, aby zarchiwizować pożądany wynik:Pominięcie pierwszego argumentu spowoduje wykrycie języka przeglądarki. Możesz też użyć opcji
2-digit
na rok.Jeśli nie potrzebujesz obsługiwać starych przeglądarek, takich jak IE10, jest to najczystszy sposób na wykonanie zadania. IE10 i niższe wersje nie zrozumieją argumentu opcji.
Uwaga: Ponadto istnieje możliwość
toLocaleTimeString
, jeśli chcesz zlokalizować lub sformatować godzinę daty.źródło
Możesz zdefiniować funkcję „str_pad” (jak w php):
źródło
Dla was, ludzie z przyszłości (ECMAScript 2017 i nie tylko)
Rozwiązanie
Wyjaśnienie
String.prototype.padStart(targetLength[, padString])
dodaje jak najwięcejpadString
wString.prototype
celu tak, że nowa długość tarczy jesttargetLength
.Przykład
źródło
.padStart(2, '0')
ponieważ drugi parametr jest łańcuchem, choć prawdopodobnie nie będzie to miało znaczenia, chyba że użyjesz TypeScript//w użyciu:
źródło
Znalazłem najkrótszy sposób, aby to zrobić:
doda wiodące zera do wszystkich samotnych, pojedynczych cyfr
źródło
źródło
Możesz użyć operatora trójskładnikowego, aby sformatować datę jak instrukcję „jeśli”.
Na przykład:
Więc
byłoby podobne do instrukcji if, gdzie jeśli getDate () zwraca wartość mniejszą niż 10, to zwraca „0” + datę lub zwraca datę, jeśli jest większa niż 10 (ponieważ nie musimy dodawać wiodącego 0). To samo dla miesiąca.
Edycja: Zapomniałem, że getMonth zaczyna się od 0, więc dodał +1, aby to uwzględnić. Oczywiście możesz również powiedzieć d.getMonth () <9:, ale pomyślałem, że użycie +1 pomogłoby ułatwić zrozumienie.
źródło
Istnieje inne podejście do rozwiązania tego problemu,
slice
w JavaScript.datestring
data powrotu z formatu zgodnie z oczekiwaniami: 01.09.2019innym podejściem jest użycie
dateformat
biblioteki: https://github.com/felixge/node-dateformatźródło
Ułatw sobie życie i użyj Moment.js przykładowego kodu:
źródło
źródło
Możesz podać opcje jako parametr formatowania daty. Pierwszy parametr dotyczy ustawień regionalnych, które mogą nie być potrzebne, a drugi dotyczy opcji. Aby uzyskać więcej informacji, odwiedź https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
źródło
Zawarłem poprawną odpowiedź na to pytanie w funkcji, która może dodawać wiele wiodących zer, ale domyślnie dodaje 1 zero.
w przypadku pracy tylko z cyframi i nie więcej niż 2 cyframi jest to również podejście:
źródło
Inna opcja, wykorzystująca wbudowaną funkcję wypełniania (ale skutkuje dość długim kodem!):
I jeszcze inne, manipulowanie ciągami za pomocą wyrażeń regularnych:
Należy jednak pamiętać, że rok pokaże się na początku, a dzień na końcu .
źródło
Dodając do odpowiedzi @modiX, to działa ... NIE ZATRZYMUJ SIĘ, że jest puste
źródło
Oto bardzo prosty przykład, jak poradzić sobie z tą sytuacją.
źródło
Poniższe ma na celu wyodrębnienie konfiguracji, podłączenie
Date.protoype
i zastosowanie konfiguracji.Użyłem
Array
do przechowywania fragmentów czasu, a gdypush()
this
jakoDate
obiekt zwraca mi długość do iteracji. Kiedy skończę, mogę używaćjoin
nareturn
wartości.Wydaje się, że działa dość szybko: 0,016 ms
demo: http://jsfiddle.net/tive/U4MZ3/
źródło
Chciałbym utworzyć własnego niestandardowego pomocnika daty, który wygląda następująco:
(zobacz także to skrzypce )
źródło
Dodaj dopełnienie, aby umożliwić wiodące zero - w razie potrzeby - i konkatenuj, używając wybranego separatora jako łańcucha.
źródło
Jak sugeruje @John Henckel, rozpoczęcie korzystania z metody toISOString () ułatwia sprawę
źródło
źródło
wypróbuj to dla podstawowej funkcji, nie wymaga bibliotek
źródło
źródło
Możesz użyć String.slice (), która wyodrębnia sekcję ciągu i zwraca go jako nowy ciąg, bez modyfikowania oryginalnego ciągu:
Możesz też użyć biblioteki lib, takiej jak Moment.js, aby sformatować datę:
źródło