datetimepickerから月日だけを取得

解決


ぽんきち  2010-01-06 22:32:44  No: 146664  IP: 192.*.*.*

表題どおりです。datetimepickerの値から年を無視して月日だけを取り出したいのですが良い方法が思いつきません。月日だけを取り出してその月日がある月日の間に入っているか調べたいです。
良い方法はないでしょうか???
ご教示お願いいたします。

環境はvb2008、vistadです。

編集 削除
太郎冠者  2010-01-06 23:05:29  No: 146665  IP: 192.*.*.*

DateTimePicker.Value.Monthで月、DateTimePicker.Value.Dayで日が取れますけど、そういう事ではなくて?

編集 削除
特攻隊長まるるう  2010-01-07 10:11:45  No: 146666  IP: 192.*.*.*

> 月日だけを取り出してその月日がある月日の間に入っているか調べたいです。
12月から1月を対象期間にするよう仕様変更になった場合はどうするのか?
1年以上の期間を指定した場合はどうするのか?

日付というのは、年月日時分秒まで全て揃っていること前提で
入力チェックの側で年を付加して日付型で判定した方が良い場合も
多いですけどね。

編集 削除
ぽんきち  2010-01-07 13:02:30  No: 146667  IP: 192.*.*.*

星座の判定をさせたいと思っています。なので、年は無視です。
たとえば牡羊座は「3/21〜4/19」となり、その範囲内であれば牡羊座と判定
するという処理です。
DateTimePicker.Value.Monthで月、DateTimePicker.Value.Dayで日、月と日は取れますがそれらを総合的に取り出して「3/21〜4/19」の間にあるかどうか判定したいのです。良い方法が思い浮かばず投稿させていただいております。よろしくお願い申し上げます

編集 削除
特攻隊長まるるう  2010-01-07 13:42:05  No: 146668  IP: 192.*.*.*

>星座の判定をさせたいと思っています。なので、年は無視です。
山羊座12/22-1/19生まれの判断は年を付加した日付型変数の大小関係比較のほうが
簡単だと言っています。

編集 削除
特攻隊長まるるう  2010-01-07 13:45:40  No: 146669  IP: 192.*.*.*

回答者によって考え方は違うので、
http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9509
↑の話の続きならそっちで聞いてください。

編集 削除
魔界の仮面弁士  2010-01-07 14:43:37  No: 146670  IP: 192.*.*.*

> 良い方法が思い浮かばず投稿させていただいております
何を以て「良い方法」なのかにもよりますが、
Year と Month が分かれば、それで十分では無いでしょうか?

> 月と日は取れますがそれらを総合的に取り出して
「総合的に取り出す」の意味が分かりかねますが、Year と Month が分かるなら、
それを MMDD 形式の文字列なり数値なりに置き換えてみては如何でしょうか。

Private Sub DateTimePicker1_ValueChanged() Handles DateTimePicker1.ValueChanged
    Dim dt As Date = DateTimePicker1.Value
    Dim YM As Integer = dt.Month * 100 + dt.Day

    Select Case YM
        Case Is <= 119 : Label1.Text = "山羊座"
        Case Is <= 218 : Label1.Text = "水瓶座"
        Case Is <= 320 : Label1.Text = "魚座"
        Case Is <= 419 : Label1.Text = "牡羊座"
        Case Is <= 520 : Label1.Text = "牡牛座"
        Case Is <= 621 : Label1.Text = "双子座"
        Case Is <= 722 : Label1.Text = "蟹座"
        Case Is <= 822 : Label1.Text = "獅子座"
        Case Is <= 922 : Label1.Text = "乙女座"
        Case Is <= 1023 : Label1.Text = "天秤座"
        Case Is <= 1121 : Label1.Text = "蠍座"
        Case Is <= 1221 : Label1.Text = "射手座"
        Case Else : Label1.Text = "山羊座"
    End Select
End Sub

編集 削除
魔界の仮面弁士  2010-01-07 15:13:08  No: 146671  IP: 192.*.*.*

> それを MMDD 形式の文字列なり数値なりに置き換えてみては如何でしょうか。
と書いておきながら、変数名をうっかり
> Dim YM As Integer
にしてしまいました…。失礼しました。

一応、YM を MD (あるいは MMDD) に置き換えておいてください。

編集 削除
ぽんきち  2010-01-07 16:10:57  No: 146672  IP: 192.*.*.*

魔界の仮面弁士様
ありがとうございます。
まさにこの方法です。
integerで100倍するという方法に気がつきませんでした。
ありがとうございます。
素晴らしすぎます。

編集 削除