web-dev-qa-db-ja.com

日付をC#でフォーマットする

日付を_dd/mm/yyyy_または_mm/dd/yy_としてフォーマットするにはどうすればよいですか?

VB format("dd/mm/yy",now)のように

C#でこれを行うにはどうすればよいですか?

19
Gold

これはほとんど同じです。単にDateTime.ToString()メソッドを使用します。例:

_DateTime.Now.ToString("dd/MM/yy");
_

または:

_DateTime dt = GetDate(); // GetDate() returns some date
dt.ToString("dd/MM/yy");
_

さらに、事前定義された日付/時刻形式の1つを使用することを検討することをお勧めします。

_DateTime.Now.ToString("g");
// returns "02/01/2009 9:07 PM" for en-US
// or "01.02.2009 21:07" for de-CH 
_

これらにより、現在のロケール設定に関係なく、フォーマットが正しくなります。

詳細については、次のMSDNページを確認してください


いくつかの追加の関連情報:

特定のロケール/カルチャで日付を表示する場合は、IFormatProviderを受け取るToString()メソッドのオーバーロードがあります。

_DateTime dt = GetDate();
dt.ToString("g", new CultureInfo("en-US")); // returns "5/26/2009 10:39 PM"
dt.ToString("g", new CultureInfo("de-CH")); // returns "26.05.2009 22:39"
_

または、日付をフォーマットする前に、現在のスレッドのCultureInfoを設定することもできます。

_Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
dt.ToString("g"); // returns "5/26/2009 10:39 PM"

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-CH");
dt.ToString("g"); // returns "26.05.2009 22:39"
_
46
M4N
string.Format("{0:dd/MM/yyyy}", DateTime.Now)

すべてのフォーマットオプションを確認するには、MSDNで「フォーマット文字列」を検索してください。

yyyyyyMMMMMMMMMMd、日付コンポーネントの場合はddddddddd

hhhHHHmmms、時刻コンポーネントの場合はss

8
Arjan Einbu

これを試して :

String.Format("{0:MM/dd/yyyy}", DateTime.Now); // 01/31/2009
String.Format("{0:dd/MM/yyyy}", DateTime.Now); // 31/01/2009
String.Format("{dd/MM/yyyy}", DateTime.Now); // 31/01/2009
2
Canavar

あなたも書くことができます

DateTime aDate = new DateTime(); 
string s = aDate.ToShortDateString();

短い表記の場合

または

DateTime aDate = new DateTime(); 
string s = aDate.ToLongDateString();

「2009年2月1日日曜日」のような長い表記。

または、 [〜#〜] msdn [〜#〜] .ToString( "???");の可能性を確認してください。

2
Sorskoot

さらに良いことに、

DateTime.Now.ToString() 

または

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

ユーザーが好む形式を使用します。

2
Nir

混乱することなく任意の形式に変換できるので、これは簡単だと思います

 DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));
0
Arun Prasad E S

私は同じ問題に遭遇しました。私がする必要があったのは、クラスの先頭に参照を追加し、現在実行中のスレッドのCultureInfoを変更することでした。

using System.Threading;

string cultureName = "fr-CA";
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);

DateTime theDate = new DateTime(2015, 11, 06);
theDate.ToString("g");
Console.WriteLine(theDate);

文化名を変更するだけです。たとえば、「en-US」=米国「fr-FR」=フランス語を話すフランス「fr-CA」=フランス語を話すカナダなど...

0
user2146538