- PR -

入力した各数字を日付に変換したい。

投稿者投稿内容
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-05 19:33
いつもお世話になっています。   

    Dim dt As Date = Now()
    Dim y As Single = Val(Me.TextBox1.Text)
Dim m As Single = Val(Me.TextBox2.Text)
Dim d As Single = Val(Me.TextBox2.Text)

y=年、m=月、d=日と言う項目です。
これを日付に変換して
    dt.DayOfYear-mdyDate.DayOfYear
と言う式で計算し、アプリケーションが立ち上がった時に計算後の値が別Labelに
表示されるようにしたいと思っています。

(疑問点)
・y=年、m=月、d=日をどうやって日付にするか。
・試しに実験してmdyDate.DayOfYearを数字に置き換えて計算しようと
したが Private Sub Form1_Loadの時に表示(計算)されていない。
(Dim dt As Date = Now()と設定)

以上よろしくお願いします。ご不明な所はお尋ね下さい。
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-05 19:34
(追加)
使用言語はVB.netです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-05 19:50
>・y=年、m=月、d=日をどうやって日付にするか。

BCL (標準クラスライブラリ)には、日付を扱うための型として DateTime 構造体が用意されています。

DateTime 型の DateTime(int, int, int) 形式のコンストラクタは、年月日の3つの整数値から、対応する DateTime 型を生成するので、それを利用してください。

なお、DateTime 型の詳細と、DateTime 型と VB.NET に VB6 との互換のために残されている Date 型との互換性などについては、ヘルプで確認してみてください。

>したが Private Sub Form1_Loadの時に表示(計算)されていない。

具体的に、どういうコードを書きましたか?

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-05 20:25
非常に初歩的な失敗の様な気がして恥ずかしいのですが・・・

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim onkdt As Single
onkdt = 3000 - 2000
Me.Label12.Text = onkdt

End Sub

ビルドしても計算結果が表示されませんでした。

>年月日の3つの整数値から、対応する DateTime 型を生成するので、それを利用してください
あまりよくわからないのですが、

Dim myDateTime As DateTime
myDateTime = System.DateTime.ParseExact(dateTimeString, _
"ddd, d MMM yyyy HH':'mm':'ss zzz", _
System.Globalization.DateTimeFormatInfo.InvariantInfo, _
System.Globalization.DateTimeStyles.None)
Console.WriteLine(myDateTime.ToString())

これの事ですか?あまり意味がわからないです×
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-05 21:00
>Dim onkdt As Single
>onkdt = 3000 - 2000
>Me.Label12.Text = onkdt
>
>ビルドしても計算結果が表示されませんでした。

特別変なことをしているようには見えないです。
1000の代わりに何が表示されるんでしょう?

>年月日の3つの整数値から、対応する DateTime 型を生成するので、それを利用してください
あまりよくわからないのですが、

>これの事ですか?あまり意味がわからないです×

DateTime 型しかあってないですね (>_<

あなたの質問は

>y=年、m=月、d=日と言う項目です。
>これを日付に変換して

だったので、私はそれに答えたつもりです。

コードであらわすと

int y = 2004;
int m = 5;
int d = 5;

DateTime dt = new DateTime (y, d, m);

のような感じです。

# 済みませんが VB は不得意なので、VB への読み替えは自分でお願いします m(_ _)m

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-05-05 21:01
引用:

Nakataさんの書き込み (2004-05-05 20:25) より:
ビルドしても計算結果が表示されませんでした。


普通に表示されるような気がするんですが、ひょっとしてデザイナの画面ですか?
実行しても表示されないですか?
引用:

Dim myDateTime As DateTime
myDateTime = System.DateTime.ParseExact(dateTimeString, _
"ddd, d MMM yyyy HH':'mm':'ss zzz", _
System.Globalization.DateTimeFormatInfo.InvariantInfo, _
System.Globalization.DateTimeStyles.None)
Console.WriteLine(myDateTime.ToString())

これの事ですか?あまり意味がわからないです×


「DateTime(int, int, int) 形式のコンストラクタ」なんですから、コンストラクタの話です(ParseExactメソッドではありません)。
# っていうか、dateTimeString っていうのはどこから…

あと、何となく変数は Integer にする方が良いような気がしますが…

--追記-- ややかぶり^^;

[ メッセージ編集済み 編集者: なちゃ 編集日時 2004-05-05 21:05 ]
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-05 22:36
諸農です。

引用:

以上よろしくお願いします。ご不明な所はお尋ね下さい。



Now()で取得された現在の年間積算日から特定の日付で
指定された年間積算日の差を日数で求めたいという事で
しょうか。

DateTime型同士の引き算ではTimeSpan型のインスタンスが
返されます。TimeSpan型にはDaysプロパティがあり、これは
「このインスタンスで表される日数を端数なしで取得します。」
との事ですので、こちらを利用されてもいいのではないでしょうか。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-05 23:00
すいません。Label2の数字を12と入力していました×(アホですね…)
実行してもできないと返信しようとしたところ、投稿の字が拡大されていた
ので気づきました。

あらためてアドバイスの事をチャレンジして報告します。

スキルアップ/キャリアアップ(JOB@IT)