Przejdź do treści stopki
POMOC NODE

Day.js npm (jak to działa dla programistów)

Obsługa dat i godzin w JavaScript od dawna stanowi wyzwanie ze względu na ograniczenia i specyfikę wbudowanego obiektu Date. Chociaż natywny obiekt Date zapewnia podstawową funkcjonalność, często nie spełnia oczekiwań pod względem użyteczności, co skłania programistów do poszukiwania bardziej niezawodnych rozwiązań. Jednym z takich rozwiązań jest Day.js, minimalistyczna biblioteka JavaScript służąca do analizowania, sprawdzania poprawności, manipulowania oraz wyświetlania dat i godzin.

W tym artykule omówiono funkcje, zalety i zastosowanie Day.js, pokazując, dlaczego stało się ono popularnym wyborem wśród programistów.

Czym jest Day.js?

Day.js to lekka biblioteka JavaScript, która zapewnia proste API do pracy z datami i godzinami w celu prawidłowego wyświetlania daty i godziny w nowoczesnych przeglądarkach. Została zaprojektowana jako alternatywa dla podobnie nowoczesnego API Moment.js, szeroko stosowanej, ale znacznie cięższej biblioteki. Day.js zajmuje zaledwie 2 kB (po kompresji gzip), co czyni go doskonałym wyborem dla aplikacji, w których liczy się wydajność. Pomimo niewielkich rozmiarów biblioteka Day.js stanowi alternatywę dla Moment.js i oferuje zaawansowane funkcje, które obejmują najczęstsze przypadki użycia.

Day.js npm (Jak to działa dla programistów): Rysunek 1 – Day.js

Najważniejsze cechy

Oto kilka kluczowych funkcji biblioteki Day.js:

  1. Lekkość: Dzięki niewielkim rozmiarom i zaawansowanym opcjom formatowania Day.js zapewnia, że Twoja aplikacja pozostaje szybka i wydajna.
  2. Niezmienność: Obiekty Day.js są niezmienne, co oznacza, że metody nie modyfikują oryginalnego obiektu, lecz zwracają nowe instancje.
  3. Łączalne API: Metody w Day.js można łączyć ze sobą, dzięki czemu kod staje się bardziej czytelny i zwięzły.
  4. Internacjonalizacja: Day.js obsługuje wiele ustawień regionalnych, co pozwala na łatwą lokalizację dat i godzin.
  5. System wtyczek: Modułowy system wtyczek pozwala rozszerzać funkcjonalność Day.js bez nadmiernego rozbudowywania biblioteki podstawowej.
  6. Kompatybilność: Day.js został zaprojektowany tak, aby był kompatybilny z Moment.js pod względem API, co ułatwia migrację istniejących kodów źródłowych.

Instalacja

Day.js można łatwo zainstalować za pomocą npm lub yarn. Można go również umieścić bezpośrednio w pliku HTML za pomocą CDN.

Korzystanie z npm

npm install dayjs
npm install dayjs
SHELL

Podstawowe zastosowanie

Day.js oferuje szerokie wsparcie dla stref czasowych, umożliwiając programistom łatwe zarządzanie czasem lokalnym i precyzyjne wykonywanie zadań związanych z manipulacją czasem. Dzięki swoim zaawansowanym możliwościom analizy składniowej Day.js zapewnia dokładną interpretację wartości daty i czasu, co pozwala uzyskać wiarygodne i spójne wyniki. Niezależnie od tego, czy chodzi o odejmowanie czasu, czy aktualizowanie wartości, Day.js ułatwia pracę z datami i godzinami, zapewniając dodatkowe funkcje, takie jak tworzenie nowych instancji w celu zwiększenia elastyczności.

Przyjrzyjmy się kilku przykładom pracy z Day.js.

1. Tworzenie dat

Utworzenie nowej instancji daty w Day.js jest proste. Poniższy przykład ilustruje to:

const dayjs = require('dayjs');

// Current date and time
const now = dayjs();

// Specific date and time
const specificDate = dayjs('2023-05-25');
const dayjs = require('dayjs');

// Current date and time
const now = dayjs();

// Specific date and time
const specificDate = dayjs('2023-05-25');
JAVASCRIPT

2. Formatowanie dat

Day.js zapewnia elastyczny i wydajny sposób formatowania dat:

const date = dayjs('2023-05-25');

// Format date as "YYYY-MM-DD"
console.log(date.format('YYYY-MM-DD')); // 2023-05-25

// Format date as "dddd, MMMM D, YYYY"
console.log(date.format('dddd, MMMM D, YYYY')); // Thursday, May 25, 2023
const date = dayjs('2023-05-25');

// Format date as "YYYY-MM-DD"
console.log(date.format('YYYY-MM-DD')); // 2023-05-25

// Format date as "dddd, MMMM D, YYYY"
console.log(date.format('dddd, MMMM D, YYYY')); // Thursday, May 25, 2023
JAVASCRIPT

3. Analiza dat

Day.js może analizować obiekty daty z ciągów znaków i wyświetlać daty w różnych formatach:

const date1 = dayjs('2023-05-25');
const date2 = dayjs('05/25/2023', 'MM/DD/YYYY');

// Check if the dates are the same
console.log(date1.isSame(date2)); // true
const date1 = dayjs('2023-05-25');
const date2 = dayjs('05/25/2023', 'MM/DD/YYYY');

// Check if the dates are the same
console.log(date1.isSame(date2)); // true
JAVASCRIPT

4. Manipulowanie datami

Day.js umożliwia łatwą manipulację datami dzięki łańcuchowemu interfejsowi API:

const date = dayjs('2023-05-25');

// Add one week to the date
const nextWeek = date.add(1, 'week');

// Subtract one month from the date
const lastMonth = date.subtract(1, 'month');

console.log(nextWeek.format('YYYY-MM-DD')); // 2023-06-01
console.log(lastMonth.format('YYYY-MM-DD')); // 2023-04-25
const date = dayjs('2023-05-25');

// Add one week to the date
const nextWeek = date.add(1, 'week');

// Subtract one month from the date
const lastMonth = date.subtract(1, 'month');

console.log(nextWeek.format('YYYY-MM-DD')); // 2023-06-01
console.log(lastMonth.format('YYYY-MM-DD')); // 2023-04-25
JAVASCRIPT

5. Porównanie dat

Porównywanie dat w Day.js jest proste i intuicyjne:

const date1 = dayjs('2023-05-25');
const date2 = dayjs('2023-06-01');

// Check if date1 is before date2
console.log(date1.isBefore(date2)); // true

// Check if date1 is after date2
console.log(date1.isAfter(date2)); // false

// Check if date1 is the same as date2
console.log(date1.isSame(date2)); // false
const date1 = dayjs('2023-05-25');
const date2 = dayjs('2023-06-01');

// Check if date1 is before date2
console.log(date1.isBefore(date2)); // true

// Check if date1 is after date2
console.log(date1.isAfter(date2)); // false

// Check if date1 is the same as date2
console.log(date1.isSame(date2)); // false
JAVASCRIPT

6. Lokalizacja

Day.js obsługuje internacjonalizację (i18n) w celu pracy z różnymi ustawieniami regionalnymi:

const dayjs = require('dayjs');
const localizedFormat = require('dayjs/plugin/localizedFormat');
const localeData = require('dayjs/plugin/localeData');
const updateLocale = require('dayjs/plugin/updateLocale');

// Extend Day.js with plugins
dayjs.extend(localizedFormat);
dayjs.extend(localeData);
dayjs.extend(updateLocale);

// Set locale to French
dayjs.locale('fr');

// Display date in localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023

// Customize locale
dayjs.updateLocale('fr', {
    months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
    weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']
});

// Display date in customized localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023
const dayjs = require('dayjs');
const localizedFormat = require('dayjs/plugin/localizedFormat');
const localeData = require('dayjs/plugin/localeData');
const updateLocale = require('dayjs/plugin/updateLocale');

// Extend Day.js with plugins
dayjs.extend(localizedFormat);
dayjs.extend(localeData);
dayjs.extend(updateLocale);

// Set locale to French
dayjs.locale('fr');

// Display date in localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023

// Customize locale
dayjs.updateLocale('fr', {
    months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
    weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']
});

// Display date in customized localized format
console.log(dayjs().format('dddd, MMMM D, YYYY')); // jeudi, mai 25, 2023
JAVASCRIPT

Używanie Day.js z IronPDF do dodawania dat do plików PDF w Node.js

Połączenie możliwości Day.js, lekkiego pakietu biblioteki JavaScript do obsługi dat, z IronPDF, wszechstronną biblioteką do generowania i edycji plików PDF dla Node.js, pozwala programistom na wydajną obsługę dat w dokumentach PDF.

IronPDF – biblioteka PDF dla Node.js

IronPDF for Node.js to kompleksowa biblioteka, która umożliwia programistom płynne tworzenie, edycję i interakcję z dokumentami PDF w ramach ich aplikacji Node.js. Dzięki bogatemu zestawowi funkcji IronPDF upraszcza takie zadania, jak generowanie plików PDF z HTML, adresów URL stron internetowych lub istniejących dokumentów, dodawanie tekstu, obrazów i elementów interaktywnych, a także precyzyjne konwertowanie HTML na PDF.

Day.js npm (Jak to działa dla programistów): Rysunek 2 – IronPDF

Aby uzyskać bardziej szczegółowe informacje na temat IronPDF for Node.js, odwiedź tę stronę dokumentacji.

Pierwsze kroki

Najpierw upewnij się, że masz zainstalowane niezbędne pakiety. Day.js i IronPDF można zainstalować za pomocą npm:

 npm i @ironsoftware/ironpdf

Dodawanie podpisów cyfrowych z datami

IronPDF obsługuje również dodawanie podpisów cyfrowych do plików PDF. Oto jak dodać podpis z sygnaturą czasową przy użyciu Day.js.

import dayjs from 'dayjs';
import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // Import a PDF
    const pdf = await PdfDocument.open("sample.pdf");

    // Get the current date and time for the signature
    const signatureDate = dayjs().toDate();

    // Sign the PDF with a digital certificate
    await pdf.signDigitalSignature({
        certificatePath: "IronSoftware.pfx",
        certificatePassword: "123456",
        signingReason: "To show how to sign a PDF",
        signingLocation: "Chicago, USA",
        signatureDate: signatureDate,
        signatureImage: {
            SignatureImagePath: "logo.png"
        }
    });

    // Save the signed PDF
    await pdf.saveAs("signed_with_date.pdf");
})();
import dayjs from 'dayjs';
import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // Import a PDF
    const pdf = await PdfDocument.open("sample.pdf");

    // Get the current date and time for the signature
    const signatureDate = dayjs().toDate();

    // Sign the PDF with a digital certificate
    await pdf.signDigitalSignature({
        certificatePath: "IronSoftware.pfx",
        certificatePassword: "123456",
        signingReason: "To show how to sign a PDF",
        signingLocation: "Chicago, USA",
        signatureDate: signatureDate,
        signatureImage: {
            SignatureImagePath: "logo.png"
        }
    });

    // Save the signed PDF
    await pdf.saveAs("signed_with_date.pdf");
})();
JAVASCRIPT

Oto wynik:

Day.js npm (Jak to działa dla programistów): Rysunek 3 – Wynik w formacie PDF

Możesz również skorzystać z gotowych przykładów kodu, aby od razu rozpocząć pracę z biblioteką w swojej aplikacji Node.js. Aby uzyskać więcej informacji, można również odwiedzić tę stronę z Dokumentacją API.

Wnioski

Day.js to potężna i wydajna biblioteka do zarządzania datami i czasem w JavaScript. Jego lekkość, obsługa niezmiennych struktur danych oraz kompatybilność z Moment.js sprawiają, że jest to atrakcyjny wybór dla programistów, którzy chcą obsługiwać operacje związane z datą i czasem bez znacznego obciążania swoich aplikacji.

Dzięki integracji Day.js z IronPDF programiści mogą z łatwością obsługiwać daty w swoich dokumentach PDF. Niezależnie od tego, czy chodzi o generowanie plików PDF z adresów URL lub ciągów HTML, czy też dodawanie podpisów cyfrowych z sygnaturami czasowymi, Day.js zapewnia prosty i wydajny sposób zarządzania datami. To połączenie zwiększa funkcjonalność aplikacji Node.js, umożliwiając solidne i dynamiczne zarządzanie dokumentami PDF.

Poznaj możliwości IronPDF już od $799. Przekonaj się sam, jak potężne mogą być funkcje generowania i edycji plików PDF. Wypróbuj już dziś!

Darrius Serrant
Full Stack Software Engineer (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie