DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Subskrybuj, aby otrzymywać najnowsze artykuły.
E-mail
Nazwa
Nazwisko
Jak chciałbyś przeczytać The Bell?
Bez spamu

Cześć wszystkim!
Często muszę pracować z danymi statystycznymi, a z datami jest wiele związanych. Co więcej, ta sama data może być użyta na stronie w różnych formatach (na przykład przyjazny dla maszyny i przyjazny dla człowieka). Myślę, że większość z was ma całkiem niezłe pojęcie o całym przerażającym kodzie, który wynika z użycia obiektu Date.
Na przykład, aby uzyskać bieżąca data w formacie DD.MM.RRRR musimy wykonać następujące czynności:
var d = nowa Data(), fd = d.getDate() + "." + (d.getMonth()+1) + "." + d.pobierzPełnyRok();
A kiedy takich linii jest dużo? Czy łatwo zapamiętać, że w javascript miesiąc zaczyna się od zera, gdy rozwijasz nie tylko na nim? Albo fakt, że są tu milisekundy, a nie sekundy, jak prawie wszędzie na backendzie? Niektóre problemy można rozwiązać za pomocą popularnej biblioteki Moment.js, ale działa ona bardzo wolno.
Omawiana biblioteka rozwiązuje te problemy.
Jeśli jesteś zainteresowany, proponuję przeczytać tę krótką recenzję.

TempusJS zawiera dużo cukru składniowego w obiekcie Date, więc jest bardzo szybki. Składnia samej biblioteki jest dość prosta. Na przykład poprzedni przykład można zapisać tak:
var fd = tempus().format("%d.%m.%Y");
Teraz o szybkości. W spojlerze widać porównanie Tempusa z Momentem i natywnym formatowaniem daty (patrz wyżej):

Porównanie natywnego JS, MomentJS i TempusJS

Pobierz aktualną datę
Natywny JS x 2 175 575 operacji/s ±0,75% (96 próbkowanych przebiegów) Moment x 284 864 operacji/s ±0,85% (próbkowanych 96 przebiegów) Tempus x 2086 081 operacji/s ±0,73% (próbkowanych 97 przebiegów)
Formatowanie
Natywny JS x 1 637 517 operacji/s ±0,61% (100 próbkowanych przebiegów) Moment x 8808 operacji/s ±1,07% (100 próbkowanych przebiegów) Tempus x 942 815 operacji/s ±0,68% (próbkowanych 94 przebiegów)
Automatyczne wykrywanie i parsowanie daty
Natywny JS x 11 204 316 operacji/s ±0,81% (88 próbkowanych przebiegów) Moment x 38 511 operacji/s ±1,41% (próbkowanych 95 przebiegów) Tempus x 93 973 operacji/s ±1,06% (próbkowanych 85 przebiegów)
Przetwarzanie daty według formatu
Moment x 46,293 operacje/s ±0,63% (100 próbkowanych przebiegów) Tempus x 109,947 operacji/s ±0,93% (99 próbkowanych przebiegów)
Parsowanie i walidacja
Moment x 44 588 operacji/s ±1,09% (próbkowano 90 przebiegów) Tempus x 103 439 operacji/s ±0,90% (próbkowano 94 przebiegi)
Wyniki pochodzą z mojego laptopa w Google Chrome 30.0.1599.114. W innych przeglądarkach wyniki są różne, ale stosunek pozostaje mniej więcej taki sam.
Do testów wykorzystano bibliotekę benchmark.js
Benchmarki dla innych funkcji, możesz zobaczyć.

Tak więc zalety tej biblioteki można zapisać w następujący sposób:

  • Obsługuje IE6+, Chrome, Firefox, Opera;
  • Obsługuje łańcuchy połączeń;
  • Miesiące mogą zaczynać się od 1 (domyślnie) zamiast od zera;
  • Milisekundy można wyłączyć (domyślnie) lub włączyć;
  • Szybka praca (Ponieważ w wielu przypadkach używany jest natywny obiekt Date przeglądarki, którego implementacja jest napisana w szybszych językach);
  • Obsługuje niestandardowe formaty i wtyczki
  • Walidacja daty jest bardzo szybka i zależy tylko od funkcji, które ustawiają datę (ponieważ walidacja odbywa się już przy wprowadzaniu wartości i nie jest wyliczana osobno);
  • Wielojęzyczność i automatyczne wykrywanie języka użytkownika.

Tutaj omówimy tylko niektóre funkcje.

Formatowanie i parsowanie

Na początek kolejny przykład formatowania daty. Tutaj również używamy łańcucha połączeń. Na końcu każdego ustawienia wartości otrzymujemy obiekt TempusDate, którego możemy użyć w dalszej części łańcucha. Przykład:
temp.(). // pobierz nową datę calc((miesiąc: -1)). // zmniejsz o jeden miesiąc format("%d.%m.%Y"); // Wyjście jako ciąg
Tak więc otrzymamy ten sam dzień, godzinę i sekundę, ale miesiąc temu. Przydaje się to do otrzymywania raportów za ostatni miesiąc.

Następnym przykładem jest parsowanie dat.
// Zwraca obiekt TempusDate z datą "2013-11-18" tempus("11/18/2013"); // Zwraca obiekt TempusDate z datą "2013-12-12" tempus("2013-12-12", "%Y-%m-%d"));
Tempus może automatycznie wykrywać niektóre znane formaty. Możesz także określić konkretny format, wtedy parsowanie będzie szybsze. Dodatkowo możesz ustawić datę, która zostanie zwrócona, jeśli parsowanie się nie powiedzie:
// Dlatego "123" nie pasuje do formatu "%d.%m.%Y", wtedy // obiekt zawierający datę 2013-01-01 zostanie zwrócony tempus("123", "%d.%m.%Y ", tempus ());
Możesz zobaczyć listę domyślnych formatów

Teraz zmieńmy format już sformatowanej daty
// "05.11.2013" tempus("11.05.2013").format("%Y-%m-%d"); // Lub tak // "Październik, 12" tempus("2013-10-12 12:31:01", "%Y-%m-%d %H:%M:%S").format(" % B, %d");

Możesz także użyć lokalizacji do formatowania. Domyślnie zostanie wybrany język użytkownika (pobrany z przeglądarki) lub język domyślny, jeśli język użytkownika nie zostanie znaleziony wśród dostępnych języków programu Tempus.
// Ustaw język tempus.lang("ru"); // Standardowy format użycia // "Listopad, 05" tempus(1383609600).format("%B, %d");
Na ten moment Są tylko dwa języki - rosyjski i angielski, więc chętnie pomogę.

Walidacja

Weryfikacja dat przebiega w następujący sposób:
// Zwraca false tempus("08/32/2013", "%d.%m.%Y").valid(); // Zwraca true tempus("00:00 01.01.2012", "%H:%M %d.%m.%Y").valid();

W przypadku błędu można zobaczyć pola, w których wystąpił - wszędzie tam, gdzie wartość nie jest fałszywa:
// Zwraca ("rok":-5,"miesiąc":false,"dzień":false,"godziny":false, // "minuty":false,"sekundy":false,"milisekundy":false) tempus (). rok(-5). // ustaw rok=-5, czyli nieprawidłowe błędy(); // pobierz obiekt z błędami

Zakresy dat

Czasami potrzebujemy podać liczbę lat (na przykład wiek), miesiące, dni itp. między dwiema datami. W tym celu możemy użyć metody between, która wyszukuje różnicę między dwiema datami i zwraca w żądany format(„rok”, „miesiąc”, „dzień”, „godziny”, „minuty”, „sekundy”, „milisekundy”).
Oto prosty przykład pokazujący liczbę miesięcy między 1 listopada 2013 a 5 maja 2014:
// Zwraca 6 tempus().between(tempus(), "miesiąc");
Albo ile godzin pozostało do nowego roku
tempus().between(tempus(), "godziny");
W ostatnim przykładzie widać, że określiłem tylko rok. Podczas ustawiania wartości na tablicę lub obiekt, brakujące wartości będą
wypełniony minimalnym. Możesz zobaczyć listę stałych z minimalnymi wartościami w dokumentacji.

Ponadto możemy zmienić dowolną datę za pomocą funkcji calc:
// Zwróć TempusDate z datą 2012-01-01 tempus().calc((rok: 1, miesiąc: -4, dzień: -1));

Własne formaty

Stosujemy własny format miesiąca, który może przyjmować wartości od 1 do 12 (zamiast 01 do 12):
// Zarejestruj nowy format tempus.registerFormat("%q", // dyrektywa - %q function(data) ( // Podaj tutaj funkcję formatowania, tj. co zostanie zastąpione za %q data powrotu.miesiąc(); ) , function(value) ( ​​// A oto funkcja parsująca var v = Number(value); return (month: (isNaN(v) ? undefined: v) ); ), 1, // Minimalna długość wartość 2 może przyjąć , // Maksymalna długość "liczba" // Typ); // Testowanie // Zwróci "01.01.2013"; tempus((rok: 2013, miesiąc: 1, dzień: 1)).format("%d.%q.%Y"); // Zwraca ("rok":2013,"miesiąc":2,"dzień":10,"godziny":0,"minuty":0,"sekundy":0); tempus("10.2.2013", "%d.%q.%Y").get();
Podczas rejestracji możesz zauważyć, że niektóre parametry są ustawiane osobno, podczas gdy możesz użyć Wyrażenie regularne. Właściwie początkowo tam był, ale po opuszczeniu go prędkość wzrosła kilkadziesiąt razy.
Jeśli chcesz usunąć jakiś format, użyj opcji UnregisterFormat:
tempus.unregisterFormat("%d"); // Zwraca „%d.01.2013”, ponieważ dyrektywa %d już nie istnieje. tempus.format((rok: 2013, miesiąc: 1, dzień: 1), "%d.%m.%Y");

Gettery/Settery

Możesz uzyskać/ustawić niektóre wartości za pomocą year(), month(), day(), hours(), minutes(), seconds(), milliseconds(), dayOfWeek(), utc(), timestamp() lub ustawić funkcje (). Na przykład:
temp.(). // Pobierz bieżącą datę rok(1900). // Pozostaw wszystko bez zmian, ale ustaw rok na 1900 rok przestępny(); // Sprawdź, czy jest to rok przestępny, fałsz w tym przypadku tempus().year(); // I tak otrzymujemy bieżący rok w postaci liczbowej

Generowanie daty

Datę możesz wygenerować na wiele sposobów, pełna lista parametry znajdują się w dokumentacji. Oto minimalny przykład.
// zwraca ["29.03.2013", "30.03.2013", "31.03.2013", "01.04.2013", "02.04.2013"]; tempus.generate(( dateFrom: "20130329", formatFrom: "%Y.%m.%d", dateTo: "20130402", period: (dzień: 1), format: "%d.%m.%Y" ));
Może to być przydatne do wyświetlania wykresów według dat i zmiany formatu wyświetlania bezpośrednio na kliencie, bez żądań do zaplecza. Datę można wygenerować jako tablicę lub jako obiekty, gdzie same daty będą używane jako klucze (przydaje się to, gdy potrzebujemy powiązać wydarzenie z datą, na przykład, gdy tworzymy własny kalendarz). Daty można również grupować według dni, tygodni, miesięcy, godzin, lat - cokolwiek. Można to również zastosować do kalendarza.

Wtyczki

Wreszcie wtyczki. Tutaj rozszerzamy fabrykę, aby wygenerować losową datę. Potrzebujemy również klasy TempusDate, którą można znaleźć w tempus.classes(). Oto przykładowa wtyczka:
(function (tempus) ( var TempusDate = tempus.classes("TempusDate"); tempus.randomDate = function() ( var date = new TempusDate()); date.year(Math.floor((Math.random()*() temp.MAX_ROK - temp.MIN_ROK)) + temp.MIN_ROK)).miesiąc(Matem.podłoga((Matem.losowe()*(tempus.MAX_MIESIĄC - temp.MIN_MIESIĄC)) + temp.MIN_MIESIĄC)).dzień(Matem. floor((Math.random()*(date.dayCount() - tempus.MIN_DAY)) + tempus.MIN_DAY)).hours(Math.floor((Math.random()*(tempus.MAX_HOURS - tempus.MIN_HOURS) ) + temp.MIN_GODZINY)).minuty(Matematyka.podłoga((Matematyka.losowa()*(tempus.MAX_MINUT - temp.MIN_MINUT)) + temp.MIN_MINUT)).sekundy(Matematyka.podłoga((Matematyka.losowa()) *(tempus.MAX_SECONDS - tempus.MIN_SECONDS)) + tempus.MIN_SECONDS)); data powrotu; ); ))(tempus); // Teraz możemy tworzyć daty takie jak ta var someRandomDate = tempus.randomDate();
Myślę, że w ten sposób będzie można wygodnie pisać widgety za pomocą jQuery + Tempus, Angular + Tempus itp.

Źródła

Możesz go zainstalować, pobierając kod źródłowy z github:
https://github.com/crusat/tempus-js/releases
Lub przez altankę:
$ bower zainstaluj tempus
Potrzebujesz tylko jednego pliku - tempus.js lub tempus.min.js.

Mam nadzieję, że ta biblioteka będzie przydatna, a także warto wiedzieć, czego jej brakuje, aby dalej rozwijać bibliotekę we właściwym kierunku. Dziękuję za uwagę!
PS Dzięki za zaproszenie!

Programista rzadko unika pracy z datami i godzinami. Generalnie data/czas to podstawowe pojęcie, a w większości języków wbudowane są mechanizmy do pracy z tym typem danych. Wydawałoby się, że JS nie jest wyjątkiem, jest wbudowany typ Date, w prototypie jest sporo funkcji, jednak…

Kto jest winny?
Pierwszy problem pojawia się, gdy trzeba ustawić datę/godzinę w strefie czasowej innej niż UTC i lokalna. Konstruktor Date nie ma takiego parametru.

Nowa data(); nowa Data(wartość); nowa Data(ciąg_daty); new Date(rok, miesiąc[, dzień[, godzina[, minuta[, sekunda[, milisekunda]]]]]);
Jedyną opcją, w której można określić przesunięcie względem UTC, jest trzeci sposób. Wywołanie konstruktora w tym formacie pozwala przekazać offset jako część ciągu:

Nowa data("Sun Lut 01 1998 00:00:00 GMT+0700")
Ciąg znaków jest akceptowany w formacie RFC2822, który jest bardzo niewygodny i trudny do ręcznego wprowadzenia. Uzyskanie takiego ciągu z danych wejściowych użytkownika jest prawie niemożliwe. Nie wyobrażam sobie osoby, która zgodziłaby się wpisać datę w takim formacie.

Pomimo tego, że w Date można ustawić wszystkie parametry osobno dla strefy czasowej UTC, nie rozwiązuje to problemu - strefa czasowa pozostanie lokalna. Ale to nie jedyny problem.

Przesunięcie względem UTC nie jest stałe. Jest to funkcja daty, godziny (lub od sygnatury czasowej, jeśli chcesz) i ponownie strefy czasowej. Na przykład w przypadku Moskwy najnowsze tłumaczenie czasu podaje:

Nowa data (2014, 9, 25, 0, 0, 0); // 26.10.2014, 21:00:00 GMT+3 nowa data(2014, 9, 27, 0, 0, 0); // 25.10.2014, 22:00:00 GMT+4
Konstruktor w trzeciej opcji staje się więc praktycznie bezużyteczny, ponieważ offset musi być z góry znany. I jak już powiedziano, nie da się tego tak prosto uzyskać. Jedyną biblioteką, z którą się zetknąłem, która wykorzystuje bazę danych Olsona do obliczania przesunięć, jest strefa czasowa-JS . Problem z używaniem tej biblioteki polega na tym, że podstawowe biblioteki (selektory daty/godziny) nic o niej nie wiedzą i aktywnie używają standardowej daty wewnętrznie. Inne biblioteki, które współpracują z obiektem Date, nie odwołują się jawnie do tej bazy danych i nie otrzymują z niej aktualizacji. (Popraw mnie w komentarzach.)

W aplikacji biznesowej strefy czasowe mają sens tylko wtedy, gdy podano datę i godzinę. Na przykład, jeśli dzień roboczy zaczyna się o godzinie 9:00, raczej nie spodziewasz się, że Twój kolega z Władywostoku zacznie pracę o godzinie 15:00. Strefy czasowe nie powinny być brane pod uwagę, aw takim przypadku data musi być wyświetlana w UTC. Jednak w przypadku regularnych wydarzeń odbywających się w tym samym czasie w różnych strefach czasowych, strefa czasowa jest nadal potrzebna. Na przykład, Twój codzienny scrum zaczyna się o 10:00 dla Ciebie i o 13:00 dla Nowosybirska. Nawiasem mówiąc, to jest właśnie różnica między GMT a UTC. UTC to czas bez offsetu, a GMT to czas z offsetem 0. Wyjaśnię na przykładzie:

31.12.2014, 20:59:59 GMT w moskiewskiej strefie czasowej powinno wyglądać jak 31.12.2014, 23:59:59 :59
Z powodu tej arytmetyki są w większości zdezorientowani. Niestety ten parametr jest wszędzie mylony. Brak bezpośredniego wskazania strefy czasowej w JS jest traktowany jako lokalna strefa czasowa, a wskazanie UTC i GMT jest równoważne.

W tej sytuacji Intl mógłby pomóc. Mogłabym, ale nie muszę. W szczególności istnieje taki parametr timeZone, ale nieco dalej standard definiuje: Strefę czasową do użycia. Jedyną wartością, którą implementacje muszą rozpoznać, jest „UTC”. Obecnie poza Chrome żadna inna przeglądarka nie obsługuje dowolnych stref czasowych.
Z przedziałami czasowymi w JS wszystko jest naprawdę źle - w języku nie ma nic podobnego. Jeśli chcesz dobrze, zrób to sam.

Co robić
  • Opcja 1.
    Nie używaj niestandardowej strefy czasowej. Preferowana opcja i prawdopodobnie najbardziej bezbolesna. Oznacza to, że masz tylko lokalną strefę czasową i UTC. W takich przypadkach wszystkie przeglądarki wydają się mieć wszystko, choć niezbyt wygodne. Ponadto strefa czasowa jest ustawiana globalnie dla systemu operacyjnego i nie jest koszerna zmiana jej dla określonej aplikacji internetowej.
  • Opcja 2.
    Jeśli potrzebne są dowolne strefy czasowe, nie używaj znacznika czasu. W ogóle. Zapisz czas w kasie oszczędnościowej w wierszu RFC ze strefą czasową. Nie jestem pewien, czy pomoże to w pokonaniu zmian stref czasowych w kontekście różnych przeglądarek, ale przynajmniej Chrome jest świadomy takich zmian.
  • Opcja 3.
    Sytuacje są różne i zdarza się, że w bazie danych rejestrowany jest czas z dowolnego urządzenia. To znaczy w formie znacznika czasu. Nie ma dokąd uciekać, aby poprawnie wyświetlić czas, musisz znać strefę czasową urządzenia, strefę czasową użytkownika lub obie i obliczyć wszystkie zmiany ręcznie. Nie możesz się obejść bez użycia bazy Olsona.
  • W tej bajce powinien być morał, ale nie mam jeszcze nic do dodania. W projektach standardu ECMA nie obserwuję postępu, prawdopodobnie nie będzie.

Użyj new Date(), aby utworzyć nowy obiekt Date zawierający bieżącą datę i godzinę.

zauważ, że Data() wywołana bez argumentów jest równoważna nowa Data(Data.teraz()) .

Gdy masz już obiekt daty, możesz użyć dowolnej z kilku dostępnych metod, aby pobrać jego właściwości (na przykład getFullYear(), aby uzyskać 4-cyfrowy rok).

Poniżej przedstawiono kilka typowych metod dat.

Pobierz bieżący rok

var rok = (nowa Date()).getFullYear(); dziennik konsoli (rok); // Przykładowe wyniki: 2016

Pobierz bieżący miesiąc

var miesiąc = (nowa Date()).getMonth(); dziennik konsoli (miesiąc); // przykładowe wyjście: 0

Zauważ, że 0 = styczeń. Dzieje się tak, ponieważ miesiące różnią się od 0 zanim 11 , więc często pożądane jest dodanie +1 do indeksu.

Pobierz bieżący dzień

varday = (nowa Data()).getDate(); dziennik konsoli (dzień); // przykładowe wyjście: 31

Pobierz aktualną godzinę

var godziny = (nowa Date()).getHours(); dziennik konsoli (godziny); // przykładowe wyjście: 10

Uzyskaj aktualne minuty

var minuty = (nowa Date()).getMinutes(); dziennik konsoli (minuty); // przykładowe wyjście: 39

Pobierz bieżące sekundy

var sekundy = (nowa Date()).getSeconds(); dziennik konsoli (drugi); // przykładowe wyjście: 48

Uzyskaj aktualne milisekundy

Aby uzyskać milisekundy (od 0 do 999) wystąpienia obiektu Date, użyj metody getMilliseconds.

var milisekund = (nowa Date()).getMilliseconds(); dziennik konsoli (milisekundy); // Dane wyjściowe: teraz milisekundy

Konwertuj bieżący czas i datę na ciąg czytelny dla człowieka

varnow = nowa Data(); // przekonwertuj datę na ciąg znaków w formacie strefy czasowej UTC: console.log(now.toUTCString()); // Wyjście: środa, 21 czerwca 2017 09:13:01 GMT

Metoda statyczna Date.now() zwraca liczbę milisekund od 1 stycznia 1970 00:00:00 UTC. Aby uzyskać liczbę milisekund, które minęły od tego czasu, korzystając z wystąpienia obiektu Date, użyj jego metody getTime.

// pobierz milisekundy za pomocą statycznej metody teraz Date console.log(Date.now()); // pobierz milisekundy za pomocą metody getTime of Date instancja console.log((new Date()).getTime());

JavaScript - Lekcja 11. Data, przedstawienie i przetwarzanie

W JavaScript data jest definiowana jako liczba milisekund, które minęły od 1 stycznia 1970 roku.

Wbudowany obiekt służy do pracy z datą i godziną Data. Ten obiekt nie ma właściwości, ale ma kilka metod, które pozwalają ustawić i zmienić datę i godzinę.

Obiekt Data stworzony z operatorem Nowy i konstruktor - Data.

Na przykład:

var mojeDane=nowa Data();

Wartość zmienna moje dane będzie aktualna data i godzina:

Metody obiektowe Data osobno można uzyskać wartości miesiąca, dnia tygodnia, godziny, minuty i sekundy:

  • pobierzDatę- zwraca liczbę od 1 do 31 reprezentującą dzień miesiąca.
  • getHours- zwraca godzinę dnia w zakresie od 0 (północ) do 23.
  • PobierzMinuty- zwraca minuty w zakresie od 0 do 59.
  • getSeconds- zwraca sekundy z zakresu od 0 do 59.
Załóżmy, że chcemy napisać skrypt, który określi aktualny czas i wypisze go w formacie „gg:mm:ss”.

data javascript

Teraz napiszmy samą funkcję nCzas():

funkcja nTime(obj) ( var t=new Date(); var h=t.getHours(); var m=t.getMinutes(); var s=t.getSeconds(); var result=h+":"+m+ ":"+s; obj.res.value=wynik; )

* jak pamiętasz metody są oddzielone od obiektu kropką, rozmawialiśmy o tym w lekcji 3 * Jak widać, wszystko jest proste. Najpierw określamy aktualny czas, a następnie metodami wyciągamy z niego poszczególne wartości godzin, minut i sekund.

Tutaj chciałbym wyjaśnić linię var wynik=h+":"+m+":"+s. Po raz pierwszy stanęliśmy przed koniecznością wyprowadzania do wyniku zarówno wartości zmiennych, jak i zwykłego tekstu. W zasadzie nic skomplikowanego: zmienne są pisane tak, jak są, tekst jest w cudzysłowie, a znak + wykonuje operację konkatenacji, tj. ich stowarzyszenia.

W naszym przykładzie była jedna wada, chcieliśmy, aby czas był wyświetlany w formacie „hh:mm:ss”, a teraz jest wyświetlany w formacie „h:m:s”. Oznacza to, że o 5 rano czas będzie wyświetlany jako „5:0:0”, ale chciałbym, aby wyglądał tak: „05:00:00” (co jest bardziej znajome). W przypadku pracy domowej możesz spróbować to naprawić. Na przykład za pomocą operatora jeśli i literał ciągu znaków „0” (pomysł jest prosty: jeśli godzin jest mniej niż 10, to w wyniku wcześniej) h wpisz "0" i tak ze wszystkimi zmiennymi).

W międzyczasie kontynuujmy badanie metod obiektu Data:

  • getDay- zwraca dzień tygodnia jako liczbę całkowitą od 0 (niedziela) do 6 (sobota).
  • getMonth- zwraca numer miesiąca w roku, jako liczbę całkowitą od 0 (styczeń) do 11 (grudzień).
  • getYear- zwraca rok jako dwie ostatnie cyfry ( getFullYear zwraca rok w postaci czterech cyfr).

    * Niestety od 2000 roku pojawia się problem z wyświetlaniem roku w różnych przeglądarkach. Metoda getYear w IE wyświetla pełny rok (zamiast dwóch ostatnich cyfr), podczas gdy FireFox wyświetla 1XX zamiast XX (tzn. substytuty 1). Dlatego lepiej jest używać metody getFullYear.

Napiszmy skrypt, który określi aktualną datę i wypisze ją w formacie „dzień miesiąc rok”.

Kod strony html będzie prosty:

data javascript

Teraz napiszmy samą funkcję tDane():

Funkcja tData(obj) ( var s; var t=new Date(); var y=t.getFullYear(); var d=t.getDate(); var mon=t.getMonth(); switch (mon) ( case 0: s="styczeń"; przerwa; przypadek 1: s="luty"; przerwa; przypadek 2: s="marzec"; przerwa; przypadek 3: s="kwiecień"; przerwa; przypadek 4: s="maj "; break; case 5: s="czerwiec"; break; case 6: s="lipiec"; break; case 7: s="sierpień"; break; case 8: s="wrzesień"; break; przypadek 9 : s="październik"; przerwa; przypadek 10: s="listopad"; przerwa; przypadek 11: s="grudzień"; przerwa; ) var wynik=d+" "+s+" "+y; obj.res.value =wynik;)

Okazało się to bardziej autentyczne niż w pierwszym przykładzie, ponieważ Muszę przetłumaczyć nazwy miesięcy na rosyjski.

Omówione powyżej metody pozwalają uzyskać datę. Jeśli potrzebujemy ustawić datę, należy zastosować następujące metody:

  • ustawić datę- ustawia dzień miesiąca w zakresie od 1 do 31.
  • setGodziny- ustawia godzinę dla aktualnego czasu w zakresie od 0 (północ) do 23.
  • setMinutes- ustawia minuty w zakresie od 0 do 59.
  • setSeconds- ustawia sekundy w zakresie od 0 do 59.
  • ustaw rok- ustala wartość roku.
  • setMonth- ustawia wartość miesiąca w zakresie od 0 (styczeń) do 11 (grudzień).
  • setTime- ustawia wartość obiektu Data i zwraca liczbę milisekund od 1 stycznia 1970 r.
Jeśli więc musimy ustawić datę na 06 grudnia 2010, w funkcji będziemy mieli następujący kod:

Vart=nowa data(); var y=t.setRok(2010); vard=t.setDate(6); varmon=t.setMonth(11); ...

Datę można ustawić bezpośrednio w konstruktorze, określając ciąg formatujący „miesiąc, dzień, rok godziny: minuty: sekundy” jako parametr:

Var t=new Date("10 lutego 1975 17:45:10");

Godziny, minuty i sekundy można pominąć (będą wyzerowane):

Var t=new Date("10.02.1975");

Tę samą datę można ustawić za pomocą liczb, podając rok, miesiąc, dzień, godziny, minuty, sekundy oddzielone przecinkami:

Var t=nowa data(75, 1, 10, 17, 45, 10);

Lub pomijając godziny, minuty i sekundy (będą one równe zero):

Var t=nowa data (75, 1, 10);

* Pojawia się problem: IE nie chce wyświetlać roku, więc lepiej nie używać tych opcji.

To wszystko, jesteś gotowy do samodzielnego napisania skryptu, który po załadowaniu strony wyświetli datę, godzinę i dzień swojej wizyty (w normalnej rosyjskiej formie). Powodzenia!

DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Subskrybuj, aby otrzymywać najnowsze artykuły.
E-mail
Nazwa
Nazwisko
Jak chciałbyś przeczytać The Bell?
Bez spamu