http://www.cnblogs.com/longsan/archive/2006/04/05/367462.html
今日、あるネチズンが Q グループに次のコードを投稿しました:
strings=Calendar1.TodaysDate.ToString( " d");
「MM/dd/yyyy」の表示方法を取得したいのですが、希望の「04/01/2006」ではなく、常に「04-01-2006」と表示されます。
私も最初は、「MM/dd/yyyy」(カスタム書式文字列)または「d」
(標準書式文字列)を使用して完了するのが当然だと思っていましたが、実験後、常に「04-」と表示されることがわかりました01 - 2006」。その後、ヘルプを確認したところ、この問題について次のことが分かりました:
1. 標準フォーマット文字列の表示は、プログラムが実行されているマシン上のローカル領域、つまり CultrueInfo に関連しています。たとえば、マシンのローカル地域設定では、設定された日付の間の区切り文字が「-」である場合、ローカル地域設定を変更しない限り、上記のコードで表示される内容は常に「-」になります。
2. 上記のコードのデフォルトの表示モードは、アメリカ英語では「04/01/2006」、中国語では「04-01-2006」、ドイツ語では「04.01.2006」です。
3. ローカルエリアの設定を変更せずに「04/01/2006」を表示したい場合は、上記のコードを次のように記述する必要があります:
strings=Calendar1. "MM'/'dd'/'yyyy");
囲まれた 2 つの一重引用符は任意の文字列で、表示時に直接表示されます。
いくつかの解決策:
最初の解決策は、上記の 3 で述べたとおりです。
2 番目の
Web.Config で、次を追加します:
これが最も便利ですが、私は試していません。
3 番目のタイプ
コントロール パネル -> 地域オプション -> カスタマイズ (時間の右側のボタン)
可能ですが、移植性はありません。
いくつかの参考情報:
日付形式の表示
SQL では、DateTime は 8 桁の日付です。指定された形式は 2003-12-31 00:00:00 です。ASP.NET で最も一般的に使用される形式は、2003-12-31 の一部にすぎません。
DateTime.Now.ToString("d") または DateTime.Now.ToShortDateString(); を使用できます。ただし、特定の形式が 2003/12/31 か 2003-12-31 かは、システム構成の日付構成によって異なります。 . .
2003-12-31 の仕様を確実に取得したい場合は、.Tostring() ユーザー定義形式を使用してください。
形式文字については、上記のドキュメントを参照してください。
たとえば、.ToString("yyyy) -MM-dd") は 2003 -11-25
を返します。ToString("yyyyMMdd") は 20031125
d を返します。 日を先頭のゼロのない数値 (1 など) で表示します。これがユーザー定義の数値形式の唯一の文字である場合は、
%d を使用します。
dd 日を先頭にゼロを付けた数字 (01 など) で表示します。
ddd 曜日を短縮形で表示します (例: Sun)。
dddd 曜日を完全な名前で表示します (例: Sunday)。
M 月を先頭のゼロのない数字で表示します (例: 1 月は 1 として表されます)。これがユーザー定義の数値形式の唯一の
文字である場合は、%M を使用します。
MM は、先頭にゼロを付けた数字として月を表示します (例: 01/12/01)。
MMM は月を省略形で表示します (例: Jan)。
MMMM は月を完全な月名で表示します (例: 1 月)。
gg 元号/エポック文字列 (例: A.D.) を表示します。
h 12 時間制を使用して、時間を先行ゼロなしの数値として表示します (例: 1:15:15 PM)。これがユーザー定義の数値形式の唯一の文字である場合は、%h を使用します。
hh 12 時間制を使用して、時間を先頭にゼロを付けた数値として表示します (例: 01:15:15 PM)。
H 24 時間制を使用して、時間を先行ゼロなしの数値で表示します (例: 1:15:15)。これがユーザー定義の数値
形式の唯一の文字である場合は、%H を使用します。
HH は、24 時間制を使用して時間を先頭にゼロを付けた数字として表示します (例: 01:15:15)。
m 先頭にゼロを付けずに分を数字で表示します (例: 12:1:15)。これがユーザー定義の数値形式の唯一の
文字である場合は、%m を使用します。
mm 分を先頭にゼロを付けた数字で表示します (例: 12:01:15)。
s 先頭にゼロを付けずに秒を数字で表示します (例: 12:15:5)。これがユーザー定義の数値形式の唯一の文字
である場合は、%s を使用します。
ss は、秒を先頭にゼロを付けた数値として表示します (例: 12:15:05)。
F は秒の小数部分を表示します。たとえば、ff は 100 分の 1 秒単位で表示され、ffff は 10000 分の 1 秒単位で表示されます。
ユーザー定義形式では、最大 7 つの f シンボルを使用できます。これがユーザー定義の数値形式の唯一の文字である場合は、%f を使用します。
T は 12 時間制を使用し、正午までの任意の時間に大文字の A を表示し、正午から午後 11 時 59 分までの任意の時間に大文字の P を表示します。これがユーザー定義の数値形式の唯一の文字である場合は、%t を使用します。
tt 12 時間制を使用し、正午までの時間は大文字の AM を表示し、正午から午後 11 時 59 分までの時間は大文字の PM を表示します。
y 年 (0 ~ 9) を先行ゼロなしの数値で表示します。これがユーザー定義の数値形式の唯一の文字である場合は、
%y を使用します。
yy (該当する場合) 先頭にゼロを付けた 2 桁の形式で年を表示します。
yyy は年を 4 桁の形式で表示します。
yyyy 年を 4 桁の形式で表示します。
z は、先行ゼロなしでタイム ゾーン オフセットを表示します (例: -8)。これがユーザー定義の数値形式の唯一の文字である場合は、
%z を使用します。
zz 先頭にゼロを付けてタイム ゾーン オフセットを表示します (例: -08)
zzz 完全なタイム ゾーン オフセットを表示します (例: -08:00)
時間についても同じ書式設定を行うことができます。設定する形式の定義を使用することもできます。必要な形式で出力します。
上記の表の文字は、順序に関係なく、任意の組み合わせで使用できます。たとえば、yyyy-yyyy と記述することも可能です。
注: 書式設定には特定の要件があります。日付がDateTime形式の場合、SQLの型は同じです。それ以外の場合、形式が無効または間違っています。特にDataGrid {0:IFromat}の形式では、それが使用されます
2) 日付入力
です。日付形式の処理 DateTime.Pares() が一般的に使用されますが、この形式での変換は非常に制限されており、一部の C# では、20031231 などの日付形式を理解できません。これが 2003-
12-31 であることは誰もが知っています。ですが、C# はそれを認識しません。次のように進めます
//言語の国を設定します
System.IFormatProvider format=new System.Globalization.CultureInfo("zh-CN",true);
//変換形式を指定します
Response.Write(DateTime.ParseExact(this .TextBox1.Text,"yyyyMMdd",format));
この方法で、No. 20031231 の日付形式を確認できます
しかし、yyyyMMdd 形式しか変換できないのが残念です他の形式は変換できません。
ただし、NET には別のオーバーロードされたバージョンが用意されています。
指定された複数の日付形式を変換できます。