このエントリーをはてなブックマークに追加


文字列日付をDateTimeに変換する

文字列日時をDateTime型に変換するメソッド DateTime.ParseExactDateTime.TryParseExact の使用例を紹介します。

関連サイト

関連記事

日時文字列の変換フォーマット

以下によく使うと思われる、年月日時分秒を指定する日時形式文字列について記します。
詳細な情報は、以下のリンクを参照ください。

日時形式文字列説明
yyyy年の4桁
MM月の2桁
dd日の2桁
hh時間の2桁(24時間)
mm分の2桁
ss秒の2桁

DateTime.ParseExactDateTime.TryParseExact の違い

DateTime.ParseExactとDateTime.TryParseExactの違いは、変換失敗時に例外を発生するか、日時変換成功/失敗時にTrue/Falseを返却するかの違いになります。

メソッド説明
DateTime.ParseExact変換失敗時は例外が発生します。
DateTime.TryParseExact変換成功時は、True, 失敗時はFalseを返却します。
成功時には引数で渡したDateTimeに変換した値が格納されます。

サンプルコード

C#とVisual Basic(VB)のサンプルコードを紹介します。

C#のサンプルコード

using System;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        String dt1str = @"2019/12/10 10:20:30";
        String dt2str = @"2019/12/10 10:20:90";
        String fmt = @"yyyy/MM/dd hh:mm:ss";
        DateTime dt;
        // ParseExactのサンプル
        try
        {
            dt = DateTime.ParseExact(dt1str, fmt, null);
            Console.WriteLine("dt1str:" + dt);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception:" + ex.Message);
        }
        try
        {
            dt = DateTime.ParseExact(dt2str, fmt, null);
            Console.WriteLine("dt2str:" + dt);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception:" + ex.Message);
        }
        // TryParseExactのサンプル
        Boolean b;
        b = DateTime.TryParseExact(dt1str, fmt, null, DateTimeStyles.AssumeLocal, out dt);
        Console.WriteLine("dt1str:" + b);
        b = DateTime.TryParseExact(dt2str, fmt, null, DateTimeStyles.AssumeLocal, out dt);
        Console.WriteLine("dt2str:" + b);
    }
}

Visual Basic(VB)のサンプルコード

Imports System
Imports System.Globalization

Module Program
    Sub Main(args As String())
        Dim dt1str As String = "2019/12/10 10:20:30"
        Dim dt2str As String = "2019/12/10 10:20:90"
        Dim fmt As String = "yyyy/MM/dd hh:mm:ss"
        Dim dt As DateTime

        ' ParseExactのサンプル
        Try
            dt = DateTime.ParseExact(dt1str, fmt, Nothing)
            Console.WriteLine("dt1str:" & dt)
        Catch ex As Exception
            Console.WriteLine("Exception:" & ex.Message)
        End Try

        Try
            dt = DateTime.ParseExact(dt2str, fmt, Nothing)
            Console.WriteLine("dt2str:" & dt)
        Catch ex As Exception
            Console.WriteLine("Exception:" & ex.Message)
        End Try

        ' TryParseExactのサンプル
        Dim b As Boolean
        b = DateTime.TryParseExact(dt1str, fmt, Nothing, DateTimeStyles.AssumeLocal, dt)
        Console.WriteLine("dt1str:" & b)
        b = DateTime.TryParseExact(dt2str, fmt, Nothing, DateTimeStyles.AssumeLocal, dt)
        Console.WriteLine("dt2str:" & b)

    End Sub
End Module

実行結果

実行結果は以下のようになります。
dt2strの秒が90となっているため、DateTime.ParseExactでは例外が発生し、DateTime.TryParseExactではfalseが返却されます。

01.png

その他

DateTime.TryParseExactメソッドでは、引数にDateTimeStyles.AssumeLocalを渡しています。
この説明については、以下のリンクを参照ください。

以上、文字列日時をDateTimeに変換するメソッドとサンプルコードの紹介でした。



添付ファイル: file01.png 8件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-01-05 (日) 15:44:28