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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.34936 の関連記事表示

<< 0 >>
■34936  変換について
□投稿者/ yuki -(2009/04/14(Tue) 15:27:19)

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

    入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
    どのように書けばいいのか教えてください。
    お願いします
親記事 /過去ログ61より / 関連記事表示
削除チェック/

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

    2090401 とか 20090431 とか 200090401 と入力されたらどうするのですか?
    例示も大事ですが、ルールがないことには始まりません。
    まずは、あらゆる入力に対するルールを提示してください。
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

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

■34942  Re[3]: 変換について
□投稿者/ επιστημη -(2009/04/14(Tue) 15:56:07)
>
    2009/04/14(Tue) 16:00:38 編集(投稿者)

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

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

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

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

    仕様がなければ実現できんです。
    ↑コレ考えるのは僕らじゃありません。
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34943  Re[3]: 変換について
□投稿者/ よねKEN -(2009/04/14(Tue) 16:03:50)
    2009/04/14(Tue) 16:05:39 編集(投稿者)

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

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

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

    画面から入力される値なんですよね???
    年月指定でなぜ日付までデータとして来るのでしょうか?
    最初から、年、月のフィールドを分けておけばいいのでは?
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

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

    桁数決まっているのなら、substringでもつかって、間に"/"わりこませて一行で完成しそうなんですね。
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34938  Re[1]: 変換について
□投稿者/ よねKEN -(2009/04/14(Tue) 15:46:53)
    aetosさんのご指摘の点以外に、

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

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

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

    #なんとなくですが、テキストボックスでフォーカスがはずれたら、
    #"/"区切りにしたいのかなという気がしなくもないです。
    #もしこの辺が絡むなら、Windowsアプリですよね?という念押しもしておきたいところ。
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34940  Re[2]: 変換について
□投稿者/ επιστημη -(2009/04/14(Tue) 15:52:12)
>
    >>入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
    >
    > 「2009/04/01」に変換するとは、Date型(System.DateTime型)に変換したい、ということか、
    > 文字列の"2009/04/01"を作成してどこかに表示しようとしているのでしょうか?

    Integer の三つ組(Year,Month,Day)が欲しいのかも知んないしなぁ...
    正当な入力か否か(短い/長い/あり得ん日付/数字以外などなど)の検証が必要かもわからんし。
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34944  Re[1]: 変換について
□投稿者/ やじゅ -(2009/04/14(Tue) 16:20:27)
>
    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
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34945  Re[2]: 変換について
□投稿者/ επιστημη -(2009/04/14(Tue) 16:44:26)
>
    >>入力された数字、たとえば20090401と入力されたら2009/04/01に変換するには何の関数を使って、
    >>どのように書けばいいのか教えてください。
    >...
    > Dim ymdString As String = String.Format("{0:0000/00/00}", 20090401)

    ダメじゃねぇすか。
    入力された「数字」であって数値ではないみたいだから。
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34949  Re[3]: 変換について
□投稿者/ biac -(2009/04/14(Tue) 17:33:55)
>
    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" だけ指定していますが、 複数指定することも
    できます。
    …が、 日本の業務アプリの要件には、 たぶん機能不足かと。
    
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/

■34958  Re[4]: 変換について
□投稿者/ biac -(2009/04/15(Wed) 10:07:04)
>
    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(^^; )
記事No.34936 のレス /過去ログ61より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -