MENU

C# DateTime型の変換 まとめ

C#でプログラミングをしていると、日付や時刻のデータを扱う機会が多くあります。特に、データベースやユーザー入力、APIとのやり取りなどでは、様々な形式の日付時刻データを扱う必要があります。そこで重要になるのが、DateTime型とその他の形式との相互変換です。この記事では、C#におけるDateTime型の主な変換方法をまとめて解説します。

目次

文字列からDateTime型への変換

文字列からDateTime型に変換する方法はいくつかありますが、最も一般的なのはDateTime.Parse()メソッドとDateTime.TryParse()メソッドです。

using System;

class Program
{
    static void Main()
    {
        // DateTime.Parse()を使用した変換
        string dateString1 = "2023/05/01 14:30:00";
        DateTime date1 = DateTime.Parse(dateString1);
        Console.WriteLine($"Parse結果: {date1}");

        // DateTime.TryParse()を使用した変換
        string dateString2 = "2023-05-01T14:30:00";
        if (DateTime.TryParse(dateString2, out DateTime date2))
        {
            Console.WriteLine($"TryParse結果: {date2}");
        }
        else
        {
            Console.WriteLine("変換に失敗しました。");
        }
    }
}

TryParse()メソッドは変換に失敗してもエラーを投げないため、ユーザー入力など信頼性の低いデータを扱う際に便利です。

DateTime型から文字列への変換

DateTime型を文字列に変換する際は、ToString()メソッドを使用します。書式指定子を使うことで、様々な形式で出力できます。

DateTime now = DateTime.Now;

// 標準的な日付と時刻の形式
Console.WriteLine(now.ToString("yyyy/MM/dd HH:mm:ss"));

// カスタム形式
Console.WriteLine(now.ToString("yyyy年MM月dd日 HH時mm分ss秒"));

// 事前定義された書式
Console.WriteLine(now.ToString("d")); // 短い日付形式
Console.WriteLine(now.ToString("D")); // 長い日付形式
Console.WriteLine(now.ToString("f")); // 完全な日付/時刻(短い時刻)

UNIXタイムスタンプとの相互変換

UNIXタイムスタンプ(1970年1月1日からの経過秒数)とDateTime型の相互変換も頻繁に行われます。

// DateTime型からUNIXタイムスタンプへの変換
DateTime date = DateTime.Now;
double unixTimestamp = (date.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
Console.WriteLine($"UNIXタイムスタンプ: {unixTimestamp}");

// UNIXタイムスタンプからDateTime型への変換
double timestamp = 1682932800; // 2023-05-01 12:00:00 UTC
DateTime convertedDate = DateTimeOffset.FromUnixTimeSeconds((long)timestamp).DateTime.ToLocalTime();
Console.WriteLine($"変換後の日時: {convertedDate}");

TimeSpanを使用した日時の計算

TimeSpan構造体を使用すると、日時の加算や減算が簡単に行えます。

DateTime now = DateTime.Now;
TimeSpan duration = new TimeSpan(7, 0, 0, 0); // 7日間

DateTime futureDate = now.Add(duration);
DateTime pastDate = now.Subtract(duration);

Console.WriteLine($"7日後: {futureDate}");
Console.WriteLine($"7日前: {pastDate}");

まとめ

C#におけるDateTime型の変換は、文字列との相互変換、UNIXタイムスタンプとの相互変換、そして日時の計算など、様々な場面で必要となります。主なポイントは以下の通りです:

  1. 文字列からDateTime型への変換にはParse()TryParse()メソッドを使用
  2. DateTime型から文字列への変換にはToString()メソッドと適切な書式指定子を使用
  3. UNIXタイムスタンプとの相互変換には適切な計算式やメソッドを使用
  4. 日時の計算にはTimeSpan構造体を活用

これらの変換方法をマスターすることで、日付や時刻に関する様々なデータ処理を効率的に行うことができます。初心者の方は、まずは基本的な文字列との相互変換から始めて、徐々に他の変換方法にも挑戦してみてください。実際のプロジェクトでこれらの方法を使用することで、より理解が深まるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次