JavaScriptで2桁の年の日付値から正しい世紀を取得する方法
2桁の年(例:19、85など)を含む日付文字列から、正しい世紀(1900年代か2000年代か)を自動的に判定したいケースはよくあります。このような場合、条件分岐を一行で書ける三項演算子を使うと、シンプルかつ効率的に実装できます。
実装の考え方
ここでは基準値として yearRangeValue = 18 を設定します。2桁の年を数値化して基準値と比較し、18より大きければ「2000年代(20xx年)」、そうでなければ「1800年代(18xx年)」として扱うロジックです。実際の開発では、この基準値はプロジェクトの要件に合わせて調整してください。
サンプルコード
以下が実装例です。
const yearRangeValue = 18;
const getCorrectCentury = dateValues => {
var [date, month, year] = dateValues.split("-");
var originalYear = +year > yearRangeValue ? "20" + year : "18" + year;
return new Date(date + "-" + month + "-" + originalYear).toLocaleDateString('en-GB')
};
console.log(getCorrectCentury('10-JAN-19'));
コードの解説
- split("-"): 日付文字列をハイフンで分割し、
date・month・yearの3つの要素に分解します(分割代入を使用)。 - +year > yearRangeValue: 単項プラス演算子で2桁の年を数値に変換し、基準値と比較します。
- 三項演算子: 比較結果に応じて「20」または「18」を接頭辞として付与し、4桁の西暦を生成します。
- toLocaleDateString('en-GB'): イギリス形式(DD/MM/YYYY)で日付を整形して返します。
プログラムの実行方法
上記のプログラムを実行するには、Node.js環境で次のコマンドを使用します。
node fileName.js
ここでは、ファイル名を demo300.js として保存したものとします。
出力結果
コンソールには以下のように表示されます。
PS C:\Users\Amit\javascript-code> node demo300.js 1/10/2019
このように、2桁の年「19」が基準値より大きいため「2019年」と正しく判定され、日付オブジェクトとして整形された結果が出力されます。同様の手法を使えば、レガシーシステムやCSVデータなどで頻出する2桁表記の日付も安全に処理できるようになります。
-
JavaScriptでURLからGETパラメータの値を取得する方法
JavaScriptでは、URLオブジェクトとsearchParamsプロパティを組み合わせることで、URLに含まれるGETパラメータ(クエリ文字列)の値を簡単に取得できます。本記事では、実際のコード例とともにその手順をわかりやすく解説します。 実装例 以下は、サンプルURL「https://www.google.com?imageSize=440&color=blue」から、imageSizeとcolorという2つのGETパラメータの値を取り出して画面に表示するコード例です。 <!DOCTYPE html> <html lang=ja> <head>
-
JavaScriptで西暦年から世紀を取得する方法
本記事では、数値または文字列として与えられた西暦年を受け取り、その年が属する世紀を計算して返すJavaScript関数の作成方法を解説します。 期待される動作 作成する関数は、次のように年を渡すと対応する世紀の番号を返します。 f("2000") = 20 f(1999) = 20 f("2002") = 21 2000年と1999年はどちらも20世紀(1901年〜2000年)に属し、2002年は21世紀に属します。世紀の区切りは「1年〜100年=1世紀」「101年〜200年=2世紀」というルールに従うため、単純に年を100で割るだけでは正しく求められな