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タイムスタンプとの相互変換、そして日時の計算など、様々な場面で必要となります。主なポイントは以下の通りです:
- 文字列からDateTime型への変換には
Parse()
やTryParse()
メソッドを使用 - DateTime型から文字列への変換には
ToString()
メソッドと適切な書式指定子を使用 - UNIXタイムスタンプとの相互変換には適切な計算式やメソッドを使用
- 日時の計算にはTimeSpan構造体を活用
これらの変換方法をマスターすることで、日付や時刻に関する様々なデータ処理を効率的に行うことができます。初心者の方は、まずは基本的な文字列との相互変換から始めて、徐々に他の変換方法にも挑戦してみてください。実際のプロジェクトでこれらの方法を使用することで、より理解が深まるでしょう。
コメント