Ribbit.work

日付の妥当性をチェックするワンライナー【JavaScript】

JavaScriptTypeScript

last modified date2021-10-8

publish date2021-8-11

特定の文字列が日付として妥当かをチェックするコードです。

日付として処理できる形かをチェックしているだけで、yyyy-mm-ddなどをチェックしているわけではない点に注意してください。

この記事の目次

JavaScript

const isDate = v => !isNaN(new Date(v).getTime());

TypeScript

const isDate = (v: string | number) => !isNaN(new Date(v).getTime());

実行結果

// 一般的なフォーマット
isDate("2021/02/03"); // true
isDate("2021-02-03"); // true
isDate("2021.02.03"); // true
isDate("2021_02_03"); // false

// 時刻を含んでいても、適切なフォーマットであればTrue
isDate("2021/02/03 12:00"); // true

// 秒換算の数値データでもTrue
isDate(1); // true
isDate("1"); // true
isDate(1612278000000); // true

getTime()のところはgetDateでもgetFullYearでもなんでもいけると思います。

Dateオブジェクトは、たとえ引数に日付として適切でない値が渡されたとしてもエラーとならず、オブジェクト自体は作成されます。

ただ日付が設定されていないため、getDateなどで値を取得することができずNaNを返します。

これを利用して、簡単に妥当性をチェックすることができます。

isNaN(new Date())のように、Dateオブジェクトを直接isNaNで判定することができますが、getTimeを判定させた方が高速になるケースが多いらしい。

参考:JavaScript (node.js/chrome/firefox) で Invalid Date を判定する

文字列を分解してチェックする方が高速ですし、秒換算のデータを許容してしまうあたり適切な場面があるのか微妙ですが、気にせず簡単に書きたい!という人向けです。

この記事をシェア

この記事を読んだ方におすすめの記事

kuromoji.jsで形態素解析
2021-12-4

kuromoji.jsで形態素解析

TypeScriptJavaScript
レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】
2021-12-4

レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】

JavaScriptKintone
レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】
2021-11-29

レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】

JavaScriptKintone
スライダーを使って数値を設定できるKintoneプラグイン【無料公開】
2021-11-26

スライダーを使って数値を設定できるKintoneプラグイン【無料公開】

KintoneJavaScriptTypeScript

最新の記事

kuromoji.jsで形態素解析
2021-12-4

kuromoji.jsで形態素解析

TypeScriptJavaScript
レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】
2021-12-4

レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】

JavaScriptKintone
レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】
2021-11-29

レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】

JavaScriptKintone
スライダーを使って数値を設定できるKintoneプラグイン【無料公開】
2021-11-26

スライダーを使って数値を設定できるKintoneプラグイン【無料公開】

KintoneJavaScriptTypeScript