【C#】日付形式の妥当性を検証する方法|DateTime.TryParseExactの使い方
C#で日付文字列が正しい書式になっているかどうかを確認したい場合、DateTime.TryParseExactメソッドを使用するのが最も簡単で確実な方法です。
このメソッドは、指定された文字列形式の日付・時刻を、それと等価なDateTime型の値に変換します。変換に成功すればtrue、指定した書式と一致しなければfalseを返すため、入力された日付の形式が正しいかどうかの検証にそのまま利用できます。
基本的な使い方
TryParseExactメソッドの主な引数は以下の通りです。
- 第1引数: 検証対象となる日付の文字列
- 第2引数: 期待する書式(例:
MM/dd/yyyy) - 第3引数: カルチャ情報(通常は
CultureInfo.InvariantCultureを指定) - 第4引数: 解析オプション(
DateTimeStyles.Noneなど) - 第5引数:
outパラメータ。変換結果のDateTime値を受け取る
サンプルコード
using System;
using System.Globalization;
namespace Demo {
class Program {
static void Main(string[] args) {
DateTime d;
bool chValidity = DateTime.TryParseExact(
"08/14/2018",
"MM/dd/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out d);
Console.WriteLine(chValidity);
}
}
}
実行結果
True
この例では、文字列「08/14/2018」が書式「MM/dd/yyyy」(月/日/年)に一致しているため、trueが出力されます。もし「2018年8月14日」や「14/08/2018」のように書式と異なる文字列を渡した場合は、falseが返されます。
ポイント
日本語環境でよく使われる「yyyy/MM/dd」形式を検証したい場合は、第2引数の書式指定子を"yyyy/MM/dd"に変更するだけで対応できます。また、TryParseExactは例外をスローせず戻り値で成否を判定できるため、ユーザー入力のバリデーション処理においても安全に扱えるのが大きなメリットです。
-
【Java】正規表現で日付文字列(MM-dd-yyyy形式)を検証する方法
Javaでは、正規表現(Regex)を使うことで、文字列として与えられた日付が「MM-dd-yyyy」形式に合致しているかどうかを簡単に検証できます。この記事では、実際に使える正規表現パターンと、その具体的な実装方法を2つのサンプルコードで解説します。MM-dd-yyyy形式に対応する正規表現以下の正規表現は、「月/日/年」(例: 09/26/1989)という形式の日付にマッチします。^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$各部分の意味は次の通りです。月の部分:1[0-2] または 0[1-9] → 01〜12 のみ許可日の部分:3
-
Pythonで日付をJSON形式(ISO 8601)に変換する方法を解説
実は、日付に対する標準的なJSON形式は存在しません。ただし、JavaScriptには標準の日付形式があり、人間が読み取りやすく、文字列として正しくソートでき、小数秒(ミリ秒以下の精度で時系列を復元するのに役立ちます)を含み、さらにISO 8601規格に準拠しているという特徴があります。Pythonの日付をこのJavaScriptの日付形式に変換するには、strftime関数を使用します。その後、この日付を必要とするクライアント側でデシリアライズ(解析)すればよいのです。なお、Python 3でISO 8601形式の日付文字列を取得したい場合は、isoformat関数を使うだけで実現できます。