Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9509

C#の基本イディオムについてその6~DateTime構造体~

$
0
0
C#での日時・時間の設定・取得をできるDateTime構造体についてまとめた。 DateTimeに値を設定する DateTimeには、 ・年 ・月 ・日 ・時 ・分 ・秒 ・1/1000秒(ミリセカンド) の値をセットすることができる var date1 = new DateTime(2007, 7, 7); DateTime date2 = new DateTime(2011, 1, 1, 11, 3, 5); var date3 = new DateTime(2000, 1, 1, 12, 24, 36, 123); 出力結果 7/7/2007 12:00:00 AM  // date1 1/1/2011 11:03:05 AM // date2 1/1/2000 12:24:36 PM // date3 ○年月日をセットすると、「セットした年月日 + 時間は午前12時」を返す。 ○年月日と時分秒をセットすると、「セットした年月日 + セットした時分秒」を返す。 ※時間は24時間単位でセットするのだが、返ってくる値は、「12時間単位 + AMかPM」 (例) 時→9、分→5、秒→1 なら、「9:05:01 AM」というように返ってくる。 なぜか、時だけ、0埋めされない。 そして、ミリセカンドはセットしても、時間には表示されない。 また、時分秒を入れる場合は、全部セットしないといけない。 不思議なのが、年月日だけ日、月、年の順で表示される。 以下の書き方は構文エラーになる var date3 = new DateTime(2007, 7, 7, 1);  // 分と秒がセットされていない var date4 = new DateTime(2007, 7, 7, 1, 1); // 秒がセットされていない 「今」と「今日」を取得する場合は特殊 var now = DateTime.Now; // 今の var today = DateTime.Today // 今日の日付を取得すr 7/28/2021 9:51:57 PM  // now 7/28/2021 12:00:00 AM // Today Nowの場合、今の日付と今の時間を返す。 Todayの場合、今の日付を返すが、時間は「12:00:00 AM」を返す。 DateTime構造体のプロパティ DateTime構造体はいくつかプロパティを持っている。 var date3 = new DateTime(2000, 1, 1, 12, 24, 36, 123); date5.Year; // 年 2000 date5.Month; // 月 1 date5.Day; // 日 1 date5.Hour; // 時 12 date5.Minute; // 分 24 date5.Second; // 秒 36 date5.Millisecond; // 1/1000秒 123 ただし、上記のプロパティは読み取り専用なので、値を書き換えることはできない。 構文エラー date5.Hour = 21; 「CS0200: Property or indexer 'DateTime.XXXX' cannot be assigned to -- it is read only (CS0200) (xxxxxxxxxxx)」という「読み取り専用の値は変更ができない」といった旨の構文エラーになる。 曜日を取得する date3.DayOfWeek; // Saturday 曜日は英語で返ってくる。 うるう年かどうかを判定する なんと、C#の日時操作には、年がうるう年かどうかを判定するメソッドがある。 DateTime.IsLeepYear(2016); // True DateTime.IsLeapYear(2018); // True 文字列からDateTimeのオブジェクトを作成する この場合は、DateTime構造体に含まれている静的メソッドであるTryParseを使用する。 また、TryParseメソッドで値が変換されれば、Trueが返り、変換ができないと例外が発生する。 第一引数に変換する日時の文字列、第二引数にoutキーワード付きのDateTime型の変数を指定する。 Console.WriteLine(date2); // この時点では、「1/1/2011 11:03:05 AM」が返ってくる // date2はDateTime型なので、変換され、Trueが返るので条件を満たす。 if(DateTime.TryParse("2020/1/1 14:15:30", out date2)) {  Console.WriteLine(date2);      // この時点で、「2020/1/1 2:15:30  PM」が返ってくる } 出力結果 1/1/2011 11:03:05 AM 1/1/2020 2:15:30 PM DateTime型の変数をフォーマットを指定して文字列に変換する var date3 = new DateTime(2000, 1, 1, 12, 24, 36); date3.ToString("d"); // 1/1/2000 date3.ToString("D");  // Saturday, January 1, 2000 date3.ToString("yyyy-MM-dd") // 2000-01-01 date3.ToString("yyyy年MM月dd日(ddd)"); // 2000年01月01日(Sat) date3.ToString("HH時mm分ss秒"); // 12時24分36秒 date3.ToString("f"); // Saturday, January 1, 2000 12:24 PM date3.ToString("F"); // Saturday, January 1, 2000 12:24:36 PM date3.ToString("t"); // 12:24 PM date3.ToString("T"); // 12:24:36 PM ※フォーマットについてはいろいろある。 参考文献

Viewing all articles
Browse latest Browse all 9509

Trending Articles