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

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

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

Re[1]: C# のFormat関数


(過去ログ 12 を表示中)

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

■3642 / inTopicNo.1)  C# のFormat関数
  
□投稿者/ C# 無知 (5回)-(2007/05/18(Fri) 00:23:19)

分類:[C# (Windows)] 


分類:[C# (Windows)] 

VBでは、Format(20000101,"yyyy/MM/dd")で
    「2000/01/01」を返しますが、C#だと旨くいきません。

    どなたか、ご存知の方がおられたら教えてもらえないでしょうか?

    よろしくお願いします。

引用返信 編集キー/
■3646 / inTopicNo.2)  Re[1]: C# のFormat関数
□投稿者/ 未記入 (87回)-(2007/05/18(Fri) 00:43:33)
No3642 (C# 無知 さん) に返信
> VBでは、Format(20000101,"yyyy/MM/dd")で
>     「2000/01/01」を返しますが、C#だと旨くいきません。
>
>     どなたか、ご存知の方がおられたら教えてもらえないでしょうか?
>
>     よろしくお願いします。

いいえ。VBでもC#でもFormat関数を使うならば同じ結果が返ります。

あなたがC#の方で対比しているのは.NET FrameworkのString.Formatメソッドではないですか?
VBの勝手にいろんなことをしやがる実装は問題となることも多いので、.NET Frameworkではどの位置に何があるのかを示す
書式指定や各種書式用のプロバイダを使って明示化する必要があります。
キーワードは「カスタム書式」かな。
引用返信 編集キー/
■3648 / inTopicNo.3)  Re[1]: C# のFormat関数
□投稿者/ 魔界の仮面弁士 (282回)-(2007/05/18(Fri) 01:09:45)
No3642 (C# 無知 さん) に返信
> VBでは、Format(20000101,"yyyy/MM/dd")で
>     「2000/01/01」を返しますが、
どう見ても、何らかのエラーになると思いますけど……。(^_^;)
VB6 で書くとすれば、Format(20000101,"0000/00/00") でしょう。

もし、第一引数が #1/1/2000# の間違いだとしても、
"2000/01/01" を返すために "yyyy/MM/dd" を指定するのは誤りです。


> C#だと旨くいきません。
VB の Format 関数は、書式(第2引数)の内容を基にして、データ(第1引数)の型を動的に決定し、
暗黙の型変換を行いますが、.NET の String.Format メソッドはそうではありません。
数値型に対しては数値書式、日付型に対しては日付書式を指定する必要があります。
引用返信 編集キー/
■3650 / inTopicNo.4)  Re[1]: C# のFormat関数
□投稿者/ Jitta (321回)-(2007/05/18(Fri) 07:37:51)
No3642 (C# 無知 さん) に返信
>
> 分類:[C# (Windows)] 
>
> VBでは、Format(20000101,"yyyy/MM/dd")で
>     「2000/01/01」を返しますが、C#だと旨くいきません。
>
>     どなたか、ご存知の方がおられたら教えてもらえないでしょうか?
>
>     よろしくお願いします。
>

必ず千万単位まで指定されているとして。

千で割って小数点以下を切り捨てたものが 年
年を千倍して元の数から引き、百で割って小数点以下を切り捨てたものが 月
年を千倍したものと月を百倍したものの和を元の数から引いたものが 日

これを、string.Format("{0:0d4}/{1:0d2}/{2:0d2}",年,月,日) だったかな?先行0で桁指定の仕方忘れた。MSDNの文字列書式を見てやってください。
それと、もとの数字は、型とその範囲に注意。


無知は悪くないが、無知でいることは良くない。無知を自覚するなら、リファレンスくらい読もう。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -