C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: DateTimePickerのバグ?仕様?


(過去ログ 12 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■3380 / inTopicNo.1)  DateTimePickerのバグ?仕様?
  
□投稿者/ C#恐怖症 (6回)-(2007/05/08(Tue) 22:05:03)

分類:[.NET 全般] 

掲題の件にて質問させて下さい。

.NETFrameworkでDateTimeクラスは 9999/12/31 23:59:59 までの日時をあらわす事が出来ると
MSDNでも記述されていますが、DateTimePickerでは何故 9998/12/31 23:59:59 までしか設定出来ないのでしょうか?

バグなのでしょうか?
それとも何かしらの意図があるのでしょうか?
引用返信 編集キー/
■3381 / inTopicNo.2)  Re[1]: DateTimePickerのバグ?仕様?
□投稿者/ ダッチ (124回)-(2007/05/08(Tue) 22:20:07)
> バグなのでしょうか?

こちらに「日付の最大値は 12/31/9998 23:59:59 に設定されます。」と記載されていますので、バグではないのは確かです。
DateTimePicker.MaxDateTime フィールド
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.maxdatetime(VS.80).aspx
引用返信 編集キー/
■3382 / inTopicNo.3)  Re[2]: DateTimePickerのバグ?仕様?
□投稿者/ C#恐怖症 (7回)-(2007/05/08(Tue) 22:46:47)
No3381 (ダッチ さん) に返信
> こちらに「日付の最大値は 12/31/9998 23:59:59 に設定されます。」と記載されていますので、バグではないのは確かです。
> DateTimePicker.MaxDateTime フィールド
> http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.maxdatetime(VS.80).aspx

MSDNに記述されているのは知っていますが、やはり仕様という事なのでしょうね・・・
なんで中途半端な9998年までなのだろう・・・
解決済み
引用返信 編集キー/
■3383 / inTopicNo.4)  Re[3]: DateTimePickerのバグ?仕様?
□投稿者/ Jitta (318回)-(2007/05/08(Tue) 22:49:59)
Jitta さんの Web サイト
No3382 (C#恐怖症 さん) に返信
> ■No3381 (ダッチ さん) に返信
>>こちらに「日付の最大値は 12/31/9998 23:59:59 に設定されます。」と記載されていますので、バグではないのは確かです。
>>DateTimePicker.MaxDateTime フィールド
>>http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.maxdatetime(VS.80).aspx
>
> MSDNに記述されているのは知っていますが、やはり仕様という事なのでしょうね・・・
> なんで中途半端な9998年までなのだろう・・・
不思議。なんで書かれていることを知っているのに、「バグなのでしょうか?」と出てくるんだろう?
解決済み
引用返信 編集キー/
■3384 / inTopicNo.5)  Re[4]: DateTimePickerのバグ?仕様?
□投稿者/ C#恐怖症 (8回)-(2007/05/08(Tue) 22:55:27)
No3383 (Jitta さん) に返信
> 不思議。なんで書かれていることを知っているのに、「バグなのでしょうか?」と出てくるんだろう?

MSDNを含む全てがバグじゃない?と思っていました。
MSDNはヘルプであって仕様書ではありませんから、我々が見えていない仕様書は9999年までなのに、
.NETFrameworkとMSDNのヘルプがバグなのかな?と。
(Monoはソースを見る限り9999年まで対応しているんですよね・・・)
引用返信 編集キー/
■3385 / inTopicNo.6)  Re[1]: DateTimePickerのバグ?仕様?
□投稿者/ 魔界の仮面弁士 (271回)-(2007/05/08(Tue) 23:17:13)
2007/05/08(Tue) 23:19:13 編集(投稿者)

No3380 (C#恐怖症 さん) に返信
う〜ん。ドキュメント バグ ですかね?
現在の実装では、最大で 12/31/9998 00:00:00 のはずが、
SDK 上では 12/31/9998 23:59:59 と書かれているようで…。

> それとも何かしらの意図があるのでしょうか?
VB6 の DTPicker の動作を見る限り、OS 自体が持つ DateTimePicker 自身は、
9999 年まで対応しているみたいですけれどね。

# 個人的には、最小日付の方が気になっていたり。
引用返信 編集キー/
■3463 / inTopicNo.7)  Re[2]: DateTimePickerのバグ?仕様?
□投稿者/ 魔界の仮面弁士 (275回)-(2007/05/10(Thu) 21:40:55)
2007/05/11(Fri) 10:56:54 編集(投稿者)

追試していますが、最大値の内部実装に問題がありますね。
手元の環境でテストしたら、こんな結果になりました。(VB2005)

=============
Dim dt As Date '= DateTimePicker.MaximumDateTime
dt = DateTime.MaxValue
DateTimePicker1.MaxDate = dt 'OK
DateTimePicker1.MaxDate = DateTime.Now 'OK
DateTimePicker1.MaxDate = dt '例外『DateTimePicker は、9998/12/31 0:00:00 より後の日付をサポートしません。』
=============

どうやら、MaxDate プロパティを保持している内部変数の初期値が、
DateTimePicker.MaximumDateTime ではなく、DateTime.MaxValue になっているようです。

そのため、最初に DateTime.MaxValue を代入した時点では問題が起きませんが、値を変更してから、
DateTime.MaxValue を代入しなおすと、例外「ArgumentOutOfRangeException」が発生するようです。問題ですね。

しかも SDK には、発生しうる例外の種類として
 ArgumentException:代入された値が MinDate より小さい値です。
 SystemException:代入された値が MaxDateTime 値を超える値です。
と挙げられていますが、これらの条件で発生する例外は、いずれも ArgumentOutOfRangeException でした。これも問題。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.maxdate%28vs.80%29.aspx

# まぁ確かに、ArgumentOutOfRangeException は、ArgumentException と SystemException の両方を継承してはいますが……。


で。

No3380の「最大値が9999年ではない点」が、仕様自体のバグと呼べるかどうかはわかりませんが(私はバグでは無いと考えます)、
No3385の「MaximumDateTime フィールドの値が間違っている点」については、ドキュメントのバグだと思いますし、
No3463の「MaxDate プロパティに、最初の 1 回だけ DateTime.MaxValue を代入できる点」は、実装のバグかと思います、私は。
引用返信 編集キー/
■3468 / inTopicNo.8)  Re[3]: DateTimePickerのバグ?仕様?
□投稿者/ ダッチ (127回)-(2007/05/10(Thu) 23:34:56)
削除
引用返信 編集キー/
■3469 / inTopicNo.9)  Re[4]: DateTimePickerのバグ?仕様?
□投稿者/ 中博俊 (1063回)-(2007/05/11(Fri) 00:05:51)
中博俊 さんの Web サイト
管理人モード
ライセンス違反を助長しかねない書き込みがあったので削除しました。

引用返信 編集キー/
■3476 / inTopicNo.10)  Re[5]: DateTimePickerのバグ?仕様?
□投稿者/ ダッチ (128回)-(2007/05/11(Fri) 08:46:29)
No3469 (中博俊 さん) に返信
> 管理人モード
> ライセンス違反を助長しかねない書き込みがあったので削除しました。
>
すみませんでした。以後気をつけます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -