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

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

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

Re[4]: 変換について


(過去ログ 61 を表示中)

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

■34936 / inTopicNo.1)  変換について
  
□投稿者/ yuki (5回)-(2009/04/14(Tue) 15:27:19)

分類:[VB.NET/VB2005 以降] 

入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
どのように書けばいいのか教えてください。
お願いします

引用返信 編集キー/
■34937 / inTopicNo.2)  Re[1]: 変換について
□投稿者/ aetos (128回)-(2009/04/14(Tue) 15:35:21)
aetos さんの Web サイト
No34936 (yuki さん) に返信
> 入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
> どのように書けばいいのか教えてください。
> お願いします

2090401 とか 20090431 とか 200090401 と入力されたらどうするのですか?
例示も大事ですが、ルールがないことには始まりません。
まずは、あらゆる入力に対するルールを提示してください。
引用返信 編集キー/
■34938 / inTopicNo.3)  Re[1]: 変換について
□投稿者/ よねKEN (317回)-(2009/04/14(Tue) 15:46:53)
aetosさんのご指摘の点以外に、

No34936 (yuki さん) に返信
> 入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、

「2009/04/01」に変換するとは、Date型(System.DateTime型)に変換したい、ということか、
文字列の"2009/04/01"を作成してどこかに表示しようとしているのでしょうか?

という当たりも明確して頂くとよいと思います。

#なんとなくですが、テキストボックスでフォーカスがはずれたら、
#"/"区切りにしたいのかなという気がしなくもないです。
#もしこの辺が絡むなら、Windowsアプリですよね?という念押しもしておきたいところ。

引用返信 編集キー/
■34939 / inTopicNo.4)  Re[2]: 変換について
□投稿者/ 倉田 有大 (557回)-(2009/04/14(Tue) 15:50:26)
No34937 (aetos さん) に返信
> ■No34936 (yuki さん) に返信
>>入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
>>どのように書けばいいのか教えてください。
>>お願いします

桁数決まっているのなら、substringでもつかって、間に"/"わりこませて一行で完成しそうなんですね。
引用返信 編集キー/
■34940 / inTopicNo.5)  Re[2]: 変換について
□投稿者/ επιστημη (1882回)-(2009/04/14(Tue) 15:52:12)
επιστημη さんの Web サイト
>>入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
>
> 「2009/04/01」に変換するとは、Date型(System.DateTime型)に変換したい、ということか、
> 文字列の"2009/04/01"を作成してどこかに表示しようとしているのでしょうか?

Integer の三つ組(Year,Month,Day)が欲しいのかも知んないしなぁ...
正当な入力か否か(短い/長い/あり得ん日付/数字以外などなど)の検証が必要かもわからんし。

引用返信 編集キー/
■34941 / inTopicNo.6)  Re[2]: 変換について
□投稿者/ yuki (6回)-(2009/04/14(Tue) 15:54:36)
No34937 (aetos さん) に返信
> ■No34936 (yuki さん) に返信
>>入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
>>どのように書けばいいのか教えてください。
>>お願いします
> 2090401 とか 20090431 とか 200090401 と入力されたらどうするのですか?
> 例示も大事ですが、ルールがないことには始まりません。
> まずは、あらゆる入力に対するルールを提示してください。
失礼しました。
2090401 とか 20090431 とか 200090401という条件でも構いません。
現在は月度の設定を行いたいと考えているのですが、目的としましては年と月をわけたいだけです。
日は考えない方向です

引用返信 編集キー/
■34942 / inTopicNo.7)  Re[3]: 変換について
□投稿者/ επιστημη (1883回)-(2009/04/14(Tue) 15:56:07)
επιστημη さんの Web サイト
2009/04/14(Tue) 16:00:38 編集(投稿者)

> 2090401 とか 20090431 とか 200090401という条件でも構いません。

構わんのはいいけど、どう区切ればいいの?

> 現在は月度の設定を行いたいと考えているのですが、目的としましては年と月をわけたいだけです。

区切り位置はどうやって判定するんすか? 無条件にケツから2,2,残り?

仕様がなければ実現できんです。
↑コレ考えるのは僕らじゃありません。

引用返信 編集キー/
■34943 / inTopicNo.8)  Re[3]: 変換について
□投稿者/ よねKEN (318回)-(2009/04/14(Tue) 16:03:50)
2009/04/14(Tue) 16:05:39 編集(投稿者)

> 2090401 とか 20090431 とか 200090401という条件でも構いません。

「2090401」や「200090401」はどこまでが年ですかね。
このパターンは(常識のモノサシを使って)仕様を想像で補うことすら不可能ですが・・・・

> 現在は月度の設定を行いたいと考えているのですが、目的としましては年と月をわけたいだけです。

画面から入力される値なんですよね???
年月指定でなぜ日付までデータとして来るのでしょうか?
最初から、年、月のフィールドを分けておけばいいのでは?

引用返信 編集キー/
■34944 / inTopicNo.9)  Re[1]: 変換について
□投稿者/ やじゅ (973回)-(2009/04/14(Tue) 16:20:27)
やじゅ さんの Web サイト
2009/04/14(Tue) 17:26:43 編集(投稿者)
2009/04/14(Tue) 16:28:07 編集(投稿者)

No34936 (yuki さん) に返信
> 入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
> どのように書けばいいのか教えてください。
> お願いします
>

仕様うんぬんは置いといて・・・
手軽なのはこんなかな。String型なので、あとはDate型に変換するとかはご自由に
Dim ymdString As String = String.Format("{0:0000/00/00}", 20090401)

年月のみなら100で割る
Dim ymString As String = String.Format("{0:0000/00}", 20090401 \ 100)


数字であって数値でないってことで、追記で・・・

例 TextBox1.Text に 20090401 と入力していたなら(入力エラーは無視) 
Dim ymdString As String = String.Format("{0:0000/00/00}", Integer.Parse(TextBox1.Text))

文字列を数値に変換する
http://dobon.net/vb/dotnet/programing/convert.html
引用返信 編集キー/
■34945 / inTopicNo.10)  Re[2]: 変換について
□投稿者/ επιστημη (1884回)-(2009/04/14(Tue) 16:44:26)
επιστημη さんの Web サイト
>>入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
>>どのように書けばいいのか教えてください。
>...
> Dim ymdString As String = String.Format("{0:0000/00/00}", 20090401)

ダメじゃねぇすか。
入力された「数字」であって数値ではないみたいだから。

引用返信 編集キー/
■34949 / inTopicNo.11)  Re[3]: 変換について
□投稿者/ biac (88回)-(2009/04/14(Tue) 17:33:55)
biac さんの Web サイト
DateTime.ParseExact() ってのがありまして、 読み取りフォーマットを指定できるわけですが…

static void ConvertTest(string date){
    try{
        DateTime d = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture);
        Console.WriteLine("'{0}' → '{1}'",
                date, d.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture));
    }
    catch (Exception ex){
        Console.WriteLine("'{0}' → 変換できないので、例外が発生しました。 {1}", date, ex);
    }
}

static void Main(string[] args){
    ConvertTest("20090401");
    ConvertTest("090401");
    ConvertTest("20090431");
    ConvertTest("20090401 ");

    Console.ReadKey();
}

※ yuki さん、ごめん。 うっかり C# で書いちゃった。
   けど、 細かいことを気にしなければ、 VB とそんなに違わないはず。
   Main メソッドの中で ConvertTest メソッドを 4回呼び出していますが、 そのうちのどれが
   ちゃんと日付を表示してくれるでしょう?

ここでは、 読み取りフォーマットとして "yyyyMMdd" だけ指定していますが、 複数指定することも
できます。
…が、 日本の業務アプリの要件には、 たぶん機能不足かと。

引用返信 編集キー/
■34958 / inTopicNo.12)  Re[4]: 変換について
□投稿者/ biac (89回)-(2009/04/15(Wed) 10:07:04)
biac さんの Web サイト
VB 2008 で書き直し。

Imports System.Globalization

Module Module1

    Sub ConvertTest(ByVal inputDate As String)
        Try
            Dim d As DateTime = DateTime.ParseExact(inputDate, "yyyyMMdd", CultureInfo.InvariantCulture)
            Console.WriteLine("'{0}' → '{1}'", _
                    inputDate, d.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture))

        Catch ex As Exception
            Console.WriteLine("'{0}' → 変換できないので、例外が発生しました。 {1}", inputDate, ex)
        End Try
    End Sub

    Sub Main()
        ConvertTest("20090401")
        ConvertTest("090401")
        ConvertTest("20090431")
        ConvertTest("20090401 ")

        Console.ReadKey()
    End Sub

End Module

※ C# と VB.NET なんて、 ほんのちょっと書き方のお約束が違うだけですよ。
   ( クラスライブラリの大海の広さに比べれば f(^^; )

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -