2016-08-04 8 views
-1

datetimeを文字列に変換したいと思います。C#ASP.NET:datetimeを文字列に変換できません

結果は04 August, 0016として返されますが、これは私の必要としないものです。

結果が04 August, 2016になりたい。

C#コード:予め

DataTable dtGroupCurr = new DataTable(); 
dtGroupCurr = sourceGroupCurr.Tables[0]; 

var groupedCurr = (from dt2 in dtGroupCurr.AsEnumerable() 
    select new 
    { 
     S_DATE = dt2.Field<DateTime>("S_DATE"), 
     BANK_CODE = dt2.Field<string>("BANK_CODE"), 
     BANK_NAME = dt2.Field<string>("BANK_NAME") 
    }).Distinct().OrderBy(x => x.S_DATE); 

foreach (var s in groupedCurr) 
{ 
    string rDate = s.S_DATE.ToString("yyyy/MM/dd"); 
    IFormatProvider culture = new CultureInfo("en-US", true); 
    DateTime date = DateTime.Parse(rDate, culture); 
    string sDate = date.ToString("dd MMMM, yyyy", CultureInfo.InvariantCulture); 
} 

おかげ;)

+0

よく見ると、見てください:https://dotnetfiddle.net/jPFBrk –

+0

私は@幸運にも同意します、それはうまく見えます。展開されたバージョン:https://dotnetfiddle.net/jPFBrk。 'rDate'の最終結果はどのように見え、' s.S_Date'は「純粋な」日付時刻ですか、それとも何か他のことをしますか? –

+2

s.S_DATEにはどのような値がありましたか? before .ToString( "yyyy/MM/dd") – Mate

答えて

0

DateTime.ParseExact方法を使用し、以下のようなフォーマットを指定:

string rDate = s.S_DATE.ToString("yyyy/MM/dd"); 
IFormatProvider culture = new CultureInfo("en-US", true); 
DateTime date = DateTime.ParseExact(rDate, "yyyy/MM/dd", culture); 
string sDate = date.ToString("dd MMMM, yyyy", CultureInfo.InvariantCulture); 
+1

オペアンプのコードとの違い –

1

試行:

string sDate = s.S_DATE.ToString("dd MMMM, yyyy", new CultureInfo("en-US", true)); 

または

string rDate = s.S_DATE.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture); // To avoid override 
IFormatProvider culture = new CultureInfo("en-US", true); 
DateTime date = DateTime.Parse(rDate, culture); 
string sDate = date.ToString("dd MMMM, yyyy", CultureInfo.InvariantCulture); 

「/」カスタム書式指定子は、年、月、および日を区別するために使用される 日付の区切りを表します。適切な ローカライズされた日付区切り文字は、現在または指定されている カルチャの DateTimeFormatInfo.DateSeparatorプロパティから取得されます。

MSDN

1

使用日やDateTime.ToShortDateString(); または Date.ToString( "dd-MM-yyyy");

関連する問題