カテゴリー【Node.js、JavaScript、MacOS、Debian】
【Node.js】chrono-nodeを使用して自然言語を日付に変換する
POSTED BY
2025-12-21
2025-12-21



Pythonであればdateparserが有名だが、性能はこのNodeのchrono-nodeのほうが体感上。
Node.jsをインストールしておく。【Javascript】Node.jsインストールメモ
chrono-nodeをインストールする。
npm install chrono-node
chrono-nodeをコールするNode.jsコードを書く。
| JavaScript | parse_dt.js | GitHub Source |
// parse_dt.js
const chrono = require("chrono-node");
// WindowsのコンソールでもUTF-8で出す(保険)
if (process.platform === "win32") {
process.stdout.setDefaultEncoding("utf8");
}
const text = process.argv[2] || "";
const refISO = process.argv[3] || null;
const ref = refISO ? new Date(refISO) : new Date();
const results = chrono.ja.parse(text, ref, { forwardDate: true });
if (!results.length) {
console.log(JSON.stringify({ found: false }));
process.exit(0);
}
const r = results[0];
const d = r.start.date();
console.log(JSON.stringify({
found: true,
raw: r.text,
date: d.toISOString(),
knownValues: r.start.knownValues,
impliedValues: r.start.impliedValues,
}, null, 2));
テストする。
node parse_dt.js "明日"
{
"found": true,
"raw": "明日",
"date": "2025-12-22T11:50:16.513Z",
"knownValues": {
"day": 22,
"month": 12,
"year": 2025
},
"impliedValues": {
"hour": 20,
"minute": 50,
"second": 16,
"millisecond": 513
}
}
node parse_dt.js "来週の土曜日"
{
"found": true,
"raw": "土曜日",
"date": "2025-12-27T03:00:00.000Z",
"knownValues": {
"weekday": 6
},
"impliedValues": {
"hour": 12,
"minute": 0,
"second": 0,
"millisecond": 0,
"day": 27,
"month": 12,
"year": 2025
}
}
node parse_dt.js "明日" "2025-01-01"
{
"found": true,
"raw": "明日",
"date": "2025-01-02T00:00:00.000Z",
"knownValues": {
"day": 2,
"month": 1,
"year": 2025
},
"impliedValues": {
"hour": 9,
"minute": 0,
"second": 0,
"millisecond": 0
}
}
node parse_dt.js "12/25 14時"
{
"found": true,
"raw": "12/25 14時",
"date": "2025-12-25T05:00:00.000Z",
"knownValues": {
"day": 25,
"month": 12,
"hour": 14,
"minute": 0
},
"impliedValues": {
"year": 2025,
"second": 0,
"millisecond": 0,
"meridiem": 1
}
}
node parse_dt.js "明後日"
{"found":false}
node parse_dt.js "あさって"
{"found":false}
なかなか優秀、しかし「あさって」くらいはわかって欲しいけどね。
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!ご連絡は以下アドレスまでお願いします★
【キーワード検索】
【最近の記事】【全部の記事】
【Node.js】chrono-nodeを使用して自然言語を日付に変換するCUDA13環境下でGPU使用版のllama.cppを導入しC++ライブラリを使う
CUDA13環境下でGPU使用版のllama-cpp-pythonを導入する
CUDA13環境下でGPU使用版のPyTorchを導入する
LetsEncrypt/certbotの証明書自動更新がエラーになる場合
Wav2Lipのオープンソース版を改造して外部から呼べるAPI化する
Wav2Lipのオープンソース版で静止画の口元のみを動かして喋らせる
【iOS】アプリアイコン・ロゴ画像の作成・設定方法
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【2】
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【1】
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化するCUDA13環境下でGPU使用版のPyTorchを導入する
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
LinuxからWindowsの共有フォルダをマウントする
【PHP】Mail/mimeDecodeを使ってメールの中身を解析(準備編)
PHPでメールの中身をフルに分解して出力する(日本語&添付ファイル対応)
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【ウマ娘】デイリーレースに雨の状態で出走するには
Googleスプレッドシートを編集したら自動で更新日時を入れる
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ