Próbuję użyć JS, aby przekształcić date object
łańcuch znaków w YYYYMMDD
format. Czy istnieje prostszy sposób niż łączenie Date.getYear()
, Date.getMonth()
i Date.getDay()
?
javascript
date
IVR Avenger
źródło
źródło
Odpowiedzi:
Zmieniony fragment kodu, którego często używam:
źródło
[1]
z.length===2
, ponieważ indekser na sznurku nie jest w pełni obsługiwana. Zobacz tę odpowiedź z powodów, dla których.[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
Nie podobało mi się dodawanie do prototypu. Alternatywą byłoby:
źródło
rightNow
zmiennej, możesz ją owinąćnew Date
i odzyskać w jednym wierszu:(new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
, więc zrobiłem to:var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
. Całkiem proste, ale należy je zamknąć.rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
Możesz użyć
toISOString
funkcji:Da ci format „rrrr-mm-dd”.
źródło
Moment.js może być twoim przyjacielem
źródło
var formattedDate = moment().format('YYYYMMDD');
Jeśli nie potrzebujesz czystego rozwiązania JS, możesz użyć interfejsu użytkownika jQuery, aby wykonać następujące zadanie:
Zwykle nie lubię importować zbyt wielu bibliotek. Ale interfejs jQuery jest tak przydatny, że prawdopodobnie użyjesz go gdzie indziej w swoim projekcie.
Odwiedź http://api.jqueryui.com/datepicker/, aby uzyskać więcej przykładów
źródło
Jest to pojedynczy wiersz kodu, którego można użyć do utworzenia
YYYY-MM-DD
ciągu dzisiejszej daty.źródło
toISOString()
da 2015-12-31T22: 00: 00 GMT +0 (dwie godziny wcześniej).źródło
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
Oprócz odpowiedzi oo chciałbym zalecić oddzielenie operacji logicznych od znaku powrotu i umieszczenie ich w postaci trójek w zmiennych.
Użyj również,
concat()
aby zapewnić bezpieczne łączenie zmiennychźródło
("00" + (this.getDate())).slice(-2)
liczb dwucyfrowych. Nie ma instrukcji „if” ani „?:”, A mniej wywołań funkcji .getX (). Jeśli nie jest trochę szybszy, jest co najmniej bardziej czytelny.Nie lubię modyfikować rodzimych obiektów i myślę, że mnożenie jest wyraźniejsze niż wypełnianie łańcucha akceptowanym rozwiązaniem.
Fiddle: http://jsfiddle.net/gbdarren/Ew7Y4/
źródło
.replace('-', '')
aby odpowiedzieć na pytanie PO), podczas gdy ty byłeś wierny oryginalnemu pytaniu PO i nie wymagałoby to dodatkowego kroku. Świetny!Proste rozwiązanie JS (ES5) bez problemów z przeskokiem daty spowodowanych drukowaniem Date.toISOString () w UTC:
To w odpowiedzi na komentarz @ weberste do odpowiedzi @Pierre Guilbert.
źródło
toISOString
zwrócić wiele kolejnych łączników?źródło
źródło
new Date()
tworzy nowy obiekt daty, który jest tylko opakowaniem wokół nr. ms od 1970/01/01 00: 00: 00.000 UTC. NastępnietoISOString
drukuje w lokalnej strefie czasowej.Innym sposobem jest użycie
toLocaleDateString
z ustawieniami regionalnymi, które mają standard formatu daty big-endian , takich jak Szwecja, Litwa, Węgry, Korea Południowa ...:Aby usunąć ograniczniki (
-
), wystarczy zastąpić cyfry:Nie ma to potencjalnego błędu, jaki można uzyskać przy formatach dat UTC: data UTC może być o jeden dzień wolna w porównaniu z datą w lokalnej strefie czasowej.
źródło
Możesz po prostu użyć tego kodu jednego wiersza, aby uzyskać datę w roku
źródło
Trochę uproszczona wersja najpopularniejszej odpowiedzi w tym wątku https://stackoverflow.com/a/3067896/5437379 :
źródło
dateformat to bardzo używany pakiet.
Jak używać:
Pobierz i zainstaluj
dateformat
z NPM. Wymagaj tego w swoim module:const dateFormat = require('dateformat');
a następnie po prostu sformatuj swoje rzeczy:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
źródło
Ten facet tutaj => http://blog.stevenlevithan.com/archives/date-time-format napisał
format()
funkcję dlaDate
obiektu Javascript , więc można go używać ze znanymi formatami literalnymi.Jeśli potrzebujesz w pełni funkcjonalnego formatowania daty w JavaScript aplikacji, użyj go. W przeciwnym razie, jeśli to, co chcesz zrobić, jest jednorazowe, to połączenie getYear (), getMonth (), getDay () jest prawdopodobnie najłatwiejsze.
źródło
Praca z odpowiedzią @ oo zwróci ciąg daty zgodnie z ciągiem formatu. Możesz łatwo dodać 2-cyfrowy regex roku na rok i milisekundy i taki, jeśli ich potrzebujesz.
Nie wiem jednak, jak to jest wydajne, szczególnie perfekcyjnie, ponieważ wykorzystuje wiele wyrażeń regularnych. Prawdopodobnie przydałby się trochę pracy, której nie opanowałem czystego js.
źródło
Ten kod jest poprawiony w odpowiedzi Pierre'a Guilberta:
(działa nawet po 10000 latach)
źródło
Wygląda na to, że mootools zapewnia
Date().format()
: https://mootools.net/more/docs/1.6.0/Types/DateNie jestem jednak pewien, czy warto uwzględnić tylko to konkretne zadanie.
źródło
Zwykle używam poniższego kodu, gdy muszę to zrobić.
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.
Jeśli więc MyDate.getMonth () zwróci 9, będzie to:
więc dodanie .slice (-2) daje nam ostatnie dwa znaki, które są:
Ale jeśli date.getMonth () zwróci 10, będzie to:
więc dodanie .slice (-2) daje nam dwa ostatnie znaki lub:
źródło
Jeśli używasz AngularJs (do 1.5), możesz użyć filtra daty :
źródło
Odpowiadając innym za prostotę i czytelność.
Ponadto nie zaleca się edytowania istniejących predefiniowanych elementów klasy za pomocą nowych metod:
źródło
Co powiesz na Day.js ?
To tylko 2 KB i ty też możesz
dayjs().format('YYYY-MM-DD')
.https://github.com/iamkun/dayjs
źródło
Jeśli nie masz nic przeciwko dołączeniu dodatkowej (ale małej) biblioteki, Sugar.js zapewnia wiele fajnych funkcji do pracy z datami w JavaScript. Aby sformatować datę, użyj funkcji formatowania :
źródło
źródło
data-shortcode na ratunek!
źródło
Użyj padStart :
źródło
Oto bardziej ogólne podejście, które pozwala zarówno na komponenty daty, jak i godziny , i jest identycznie sortowalne jako liczba lub ciąg.
Na podstawie kolejności numerów w formacie Data ISO przekonwertuj na lokalną strefę czasową i usuń cyfry. to znaczy:
Stosowanie
źródło
Natywny JavaScript:
źródło