2011-08-09 12 views
14

String.Format("/")が " - "に変換されるのはなぜですか?String.Formatがスラッシュをマイナス記号に変換するのはなぜですか?

+5

スタックオーバーフローコミュニティは無料で、能力を最大限引き出すために無料で_encouraged_しています。これに不快なら、スタックオーバーフローはおそらくあなたのためではありません。できるだけ早く[FAQ](http://stackoverflow.com/faq)をご覧ください。 –

答えて

21

{0}プレースホルダ内に/シンボルが使用されている可能性があります。これは、指定されたカルチャ内の日時区切り記号として使用される予約シンボルです。

string date = string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now); 
1

"/"の代わりにあなたの文化のあなたの日付seperatorが "/"であるように見えます。 msdnこのarticle

編集を参照してください。

はあなたが使用して選択したオプションはありませんことを確認するために、地域と言語の設定を確認しました「 - 」を。

enter image description here

+0

短い日付書式は 'yyyy-MM-dd'ですが、' String.Format( "/") 'は'/"を返します。 – Guffa

+0

@Guffa - 興味深い...私は間違った木を吠えているようだ。 –

6

私はすべての可能な文化であることを試してみました:

foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures)) { 
    Console.Write(String.Format(info, "/")); 
} 

出力:だから

//////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////////////// 
////////////////////////////////// 

、どこでも発生しません。

+0

母は、出力を愛する – SwDevMan81

13

Custom Date and Time Format Stringsによると、/は、培養の日付区切りを指す。だからあなたはそれをエスケープする必要があります。ダーリンの答えごとにバックスラッシュを使うことも、小さな引用符で引用することもできます。例:

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main() 
    { 
     DateTime date = DateTime.Now; 

     CultureInfo da = new CultureInfo("da"); 
     // Prints 09-08-2011 
     Console.WriteLine(string.Format(da, "{0:dd/MM/yyyy}", date)); 
     // Prints 09/08/2011 
     Console.WriteLine(string.Format(da, "{0:dd'/'MM'/'yyyy}", date)); 
     // Prints 09/08/2011 
     Console.WriteLine(string.Format(da, "{0:dd\\/MM\\/yyyy}", date)); 
    } 
} 
関連する問題