前提・実現したいこと
C#で勉強しているものです。
カレンダーを作成しているのですが、DateTime,DateTimeOffsetをしようして変数を取得して
今日を0,明日を1,三日後を3などのint型の変数を取得するにはどうすればよいのでしょうか。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C#
1private void button1_Click(object sender, EventArgs e) 2 { 3 DateTime dat1 = DateTime.Now; 4 DateTime dat2 = new DateTime(2020, 4, 25); 5 var result = dat1 - dat2; 6 label1.Text = Convert.ToString(result); //-5.06:15:16:6865582などの計算結果になる 7 } 8
private void button1_Click(object sender, EventArgs e) { var dat3 = new DateTimeOffset(DateTime.Now,TimeSpan.Zero); //この行でDatetime.Nowを使用した場合下記の行で例外が発生する var dat4 = new DateTime(2020, 4, 10, 0, 0, 0); //この行で例外が発生する var dat5 = new DateTimeOffset(dat4, TimeSpan.Zero); var result1 = dat4 - dat5; label1.Text = Convert.ToString(result1); }
試したこと
いろいろ試したのですがgoogle検索で検索したもので算出できませんでした。
一つ目の計算結果からint型に変換するメソッドを見つけられませんでした。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2019
Version 16.5.4
.NET Framework version 4.8.03752
>うまくいきませんでした。
https://teratail.com/help/question-tips#questionTips3-4-1
var dat3 = new DateTimeOffset(DateTime.Now,TimeSpan.Zero); //この行でDatetime.Nowを使用した場合下記の行で例外が発生する
↑を↓のようにしたとき、例外は発生しなくなりますが、不可解な仕様ですね。
var dat3 = new DateTimeOffset(DateTime.Now, TimeSpan.FromHours(9)); //この行でDatetime.Nowを使用した場合下記の行で例外が発生する
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetimeoffset.-ctor?view=netframework-4.8#System_DateTimeOffset__ctor_System_DateTime_System_TimeSpan_
とりあえず、DateTimeOffset のコンストラクタが発生させる例外のようなので、それがなぜか DateTime のインスタンスを作成する時に遅延発生しているのでしょう。
意味合いとしては、ローカル時間という設定になっているはずなのに 9 ではなく 0 になっているのがおかしいということです。
https://docs.microsoft.com/ja-jp/dotnet/standard/datetime/instantiating-a-datetimeoffset-object?view=netframework-4.8
> 最初のパラメーターの Kind プロパティが DateTimeKind.Localの場合、2番目のパラメーターの値は、ローカルシステムのタイムゾーンのオフセットである必要があります。 最初のパラメーターの Kind プロパティが DateTimeKind.Unspecifiedの場合、オフセットには任意の有効な値を指定できます。
DateTimeKind.Unspecified で作成すると大丈夫だと思います。
しかし、根本的な問題として、この質問の問題を解決するのに DateTimeOffset は必要ありません。詳細は他の回答者さん(たち)の回答をご覧ください。
m.ts10806さん
詳細を一部分に固めてしまい空白を埋めていく作業になってしまってました。
次回から気を付けていきます。
ご指摘ありがとうございました。
質問は編集できますので適宜ご対応ください
Zuishinさん程解析できるようになりたいものです。
しっかり勉強させていただきます。
ありがとうございました。
回答2件
あなたの回答
tips
プレビュー