ノードヘルプ

date-fns NPM (開発者のための仕組み)

はじめに

Reactアプリケーションで日付を扱う場合、date-fnsは強力で軽量な最新のJavaScript日付ユーティリティライブラリであり、JavaScriptの日付を簡単に操作できます。 date-fnsは既存のネイティブな日付データ型を使用し、安全のためにコアオブジェクトを拡張しません。つまり、潜在的なエラーや競合につながる可能性のある、組み込みの日付データ型の修正や機能追加を避けることを意味します。 この記事では、あなたのReactプロジェクトにdate-fnsを統合する方法を探り、いくつかの実用的な例を提供します。

date-fnsを選ぶ理由

date-fnsにはいくつかの利点があります:

  • モジュラー: 必要な機能だけをインポートすることで、バンドルサイズを削減できます。
  • Immutable: それは純粋関数を使用して構築されており、これらの関数は元の日時オブジェクトを変更しません。
  • 包括的: 日付の操作とフォーマットに関する幅広い機能を提供します。
  • 国際化: 複数のロケールをサポートします。

はじめに

まず、date-fns npmパッケージをnpm経由でインストールします:

npm install date-fns
or
yarn add date-fns
npm install date-fns
or
yarn add date-fns
SHELL

日付のフォーマット

最も一般的なタスクの1つは、日付のフォーマットです。 タイムゾーンの現在の日付を読みやすい形式で表示するシンプルなコンポーネントを作成しましょう。

import React from 'react';
import { format } from 'date-fns';
const FormattedDate = () => {
  const currentDate = new Date();
  const formattedDate = format(currentDate, 'MMMM do, yyyy');
  return <p>{formattedDate}</p>;
};
export default FormattedDate;
js
JAVASCRIPT

出力

date-fns NPM(開発者向けの仕組み):図1

日付の解析

文字列から日付を解析することもできます。 以下は、日付文字列を解析し、異なるフォーマットで表示する例です:

import React from 'react';
import { parse, format } from 'date-fns';
const ParsedDate = () => {
  const dateString = '2024-06-23';
  const parsedDate = parse(dateString, 'yyyy-MM-dd', new Date());
  const formattedDate = format(parsedDate, 'MMMM do, yyyy');
  return <p>{formattedDate}</p>;
};
export default ParsedDate;
js
JAVASCRIPT

出力

date-fns NPM(開発者にとっての仕組み):図2

日付の足し算と引き算

date-fnsを使用すると、日付から時間を簡単に加算または減算できます。 以下は、現在の日付に7日を追加する例です:

import React from 'react';
import { addDays, format } from 'date-fns';
const AddDaysExample = () => {
  const currentDate = new Date();
  const futureDate = addDays(currentDate, 7);
  const formattedDate = format(futureDate, 'MMMM do, yyyy');
  return <p>{formattedDate}</p>;
};
export default AddDaysExample;
js
JAVASCRIPT

出力

date-fns NPM(開発者向けの仕組み):図3

国際化

date-fnsは複数のロケールをサポートしています。 特定のローカルを使用するには、それをインポートし、フォーマット関数に渡す必要があります:

import React from 'react';
import { format } from 'date-fns';
import { fr } from 'date-fns/locale';
const FrenchDate = () => {
  const currentDate = new Date();
  const formattedDate = format(currentDate, 'MMMM do, yyyy', { locale: fr });
  return <p>{formattedDate}</p>;
};
export default FrenchDate;
js
JAVASCRIPT

出力

date-fns NPM(開発者向けの動作方法):図4

IronPDFの紹介

IronPDF for Node.jsは、Node.jsプロジェクトでPDFの生成や編集を可能にする強力なNode.js PDFライブラリです。 HTMLからPDFを作成したり、既存のPDFを操作したり、ウェブページをPDF形式に変換したりする必要がある場合、IronPDFがお手伝いします。

date-fns NPM(開発者のための仕組み): 図5 - IronPDF for Node.js: Node.js PDFライブラリ

主な機能

HTMLをPDFに変換

HTMLコンテンツを簡単にPDF文書に変換。 この機能は、ウェブコンテンツからダイナミックPDFを生成する場合に特に便利です。

URLからPDFへの変換

URLから直接PDFを生成し、Webページの内容をキャプチャしてプログラムでPDFファイルとして保存できます。

PDF操作

既存のPDF文書を簡単に結合、分割、操作できます。 IronPDFはページの追加、ドキュメントの分割などの機能を提供します。

PDFセキュリティ

PDF文書をパスワードで暗号化したり、電子署名を適用したりして保護します。 IronPDFは不正アクセスから機密文書を保護するオプションを提供します。

高品質出力

テキスト、画像、書式を正確にレンダリングして、高品質のPDF文書を作成します。 IronPDFは生成されたPDFが元のコンテンツに忠実であることを保証します。

クロスプラットフォーム互換性

IronPDF は、Windows、Linux、macOS などのさまざまなプラットフォームと互換性があり、幅広い開発環境に適しています。

シンプルな統合

Node.jsアプリケーションにIronPDFをnpmパッケージを使って簡単に統合できます。 APIは十分に文書化されているので、PDF生成機能をプロジェクトに組み込むのは簡単です。

インストール

IronPDF NPMパッケージをインストールするには、次のコマンドを使用します:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
SHELL

IronPDFを使用してPDFドキュメントを生成し、Date-Fnsを使用する

依存関係のインストール: まず、新しいNext.jsプロジェクトを次のコマンドで作成します(まだ作成していない場合): こちらを参照してください

npx create-next-app@latest date-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
npx create-next-app@latest date-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
SHELL

次に、プロジェクト・ディレクトリに移動する:

cd date-pdf
cd date-pdf
SHELL

必要なパッケージをインストールする:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add date-fns
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add date-fns
SHELL

PDFを作成する

それでは、IronPDFを使用してPDFを生成するシンプルな例を作成してみましょう。 Next.jsコンポーネント(例:pages/index.tsx)に次のコードを追加します:

PDF生成API: 最初のステップは、PDFドキュメントを生成するためのバックエンドAPIを作成することです。 IronPDFはサーバーサイドでしか動作しないため、ユーザーがPDFを生成したいときに呼び出すAPIを作成する必要があります。 pages/api/pdf.jsのパスにファイルを作成し、以下の内容を追加する。

IronPDFにはライセンスキーが必要です。ライセンスページから取得し、以下のコードに配置してください。

// pages/api/pdf.js
import {IronPdfGlobalConfig, PdfDocument} from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key";
export default async function handler(req, res) {
  try {
    const currentDate = new Date(); // javascript dates
    const formattedDate = format(currentDate, 'MMMM do, yyyy');
    let content = "<h1>Demo React Hook Form and Generate PDF Using IronPDF</h1>"
    content+="<p>Date:"+currentDate+"</p>";
    content+="<p>Formatted Date:"+formattedDate+"</p>";
    const pdf = await PdfDocument.fromHtml(content);
    const data = await pdf.saveAsBuffer();
    console.error("data PDF:", data);
    res.setHeader("Content-Type", "application/pdf");
    res.setHeader(
      "Content-Disposition",
      "attachment; filename=awesomeIron.pdf",
    );
    res.send(data);
  } catch (error) {
    console.error("Error generating PDF:", error);
    res.status(500).end();
  }
}
}
js
JAVASCRIPT

index.jsを修正し、以下のコードを追加してください。

import Head from "next/head";
import styles from "../styles/Home.module.css";
import React, { useState, useEffect } from "react";
import { format } from 'date-fns';
export default function Home() {
  const [text, setText] = useState("");
  useEffect(() => {
    const currentDate = new Date(); // new date instance
    const formattedDate = format(currentDate, 'MMMM do, yyyy');
    setText(formattedDate);
  }, []);
  const generatePdf = async () => {
    try {
      const response = await fetch("/api/pdf-datefns?f=" + text);
      const blob = await response.blob();
      const url = window.URL.createObjectURL(new Blob([blob]));
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "awesomeIron.pdf");
      document.body.appendChild(link);
      link.click();
      link.parentNode.removeChild(link);
    } catch (error) {
      console.error("Error generating PDF:", error);
    }
  };  
  const handleChange = (event) => {
    seteText(hashids.encode(event.target.value));
    setText(event.target.value);
  };
  return (
    <div className={styles.container}>
      <Head>
        <title>Generate PDF Using IronPDF</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <main>
        <h1>Demo Date-fns and Generate PDF Using IronPDF</h1>     
        <p>
          Formatted Data: {text}
        </p>
        <button style={{ margin: 20, padding: 5 }} onClick={generatePdf}>
          Generate PDF 
        </button>
      </main>
      <style jsx>{`
        main {
          padding: 5rem 0;
          flex: 1;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
        }
        footer {
          width: 100%;
          height: 100px;
          border-top: 1px solid #eaeaea;
          display: flex;
          justify-content: center;
          align-items: center;
        }
        footer img {
          margin-left: 0.5rem;
        }
        footer a {
          display: flex;
          justify-content: center;
          align-items: center;
          text-decoration: none;
          color: inherit;
        }
        code {
          background: #fafafa;
          border-radius: 5px;
          padding: 0.75rem;
          font-size: 1.1rem;
          font-family:
            Menlo,
            Monaco,
            Lucida Console,
            Liberation Mono,
            DejaVu Sans Mono,
            Bitstream Vera Sans Mono,
            Courier New,
            monospace;
        }
      `}</style>
      <style jsx global>{`
        html,
        body {
          padding: 0;
          margin: 0;
          font-family:
            -apple-system,
            BlinkMacSystemFont,
            Segoe UI,
            Roboto,
            Oxygen,
            Ubuntu,
            Cantarell,
            Fira Sans,
            Droid Sans,
            Helvetica Neue,
            sans-serif;
        }
        * {
          box-sizing: border-box;
        }
      `}</style>
    </div>
  );
}
js
JAVASCRIPT

出力

date-fns NPM(開発者向けの仕組み):図6

PDF

date-fns NPM(開発者向けのしくみ):図7

IronPDFライセンス

IronPDF.

ライセンスキーをここに入力します:

import {IronPdfGlobalConfig, PdfDocument} from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your key here";
js
JAVASCRIPT

結論

date-fnsは、Reactアプリケーションで日付を処理するための強力かつシンプルで一貫性のあるツールセットを提供する、多用途で効率的なライブラリです。 モジュール方式を採用しているため、必要な機能のみを盛り込むことができ、バンドルサイズを小さく抑えることができます。 日付操作と書式設定を包括的にサポートするdate-fnsは、Reactプロジェクトを大幅に強化します。

IronPDF for Node.jsは、開発者がプログラムでPDFドキュメントをシームレスに生成、操作、作業できるようにする堅牢なライブラリです。 HTML、URL、その他のフォーマットをPDFに変換する必要がある場合でも、IronPDFはこれらのタスクを効率的に達成するためのわかりやすいAPIを提供します。 その機能は、PDFフォームの処理、セキュリティ対策の適用、OCRの実行などに及びます。

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得しており、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに魅了され、コンピューティングを神秘的でありながらアクセスしやすいものと見なし、それが創造性と問題解決のための完璧な媒体であると感じました。

Iron Softwareでは、新しいものを作り出し、複雑な概念を簡単にすることでより理解しやすくすることを楽しんでいます。彼は常駐の開発者の一人として、学生に教えることを志願し、自分の専門知識を次世代と共有しています。

Darriusにとって、彼の仕事は評価され、実際に影響があることで充実しています。

< 以前
memcached npm (開発者のための仕組み)
次へ >
express validator npm(開発者向けの仕組み)