2012-02-09 11 views
1

StringをDateTimeに変換してからToString()に変換すると、奇妙な動作が発生します。 ToLongDateString()何とか/をに変換するを使用しているときは、変換を見ることができるように16 februar 2012StringをDateTimeに変換するときの奇妙な動作

2012年2月16日 Convert.ToDateTime("16-02-2012").ToLongDateString()結果で

Convert.ToDateTime("16-02-2012").ToString("MM/dd/yyyy")結果は正しいです - ときToString()を使用します。

Iは、Excelシートに最初の結果を挿入すると値が実際'02ある-16-2012(先頭に「気づく)

Iは第1のセグメントがより低い日付を使用12結果には/が含まれていますが、dd/MM/yyyyに戻されます。

私はToDateTime()を変換するときにnew System.Globalization.CultureInfo("da-DK", false)を使用しようとしましたが、効果はありません(システムはすでにda-DKに設定されていますが、必死になっています)。

誰でもこの現象が以前に見られましたか?少し私のポストを明確にする

EDIT

、デンマーク語の日付形式は、(私はYYYY/MM/DDにフォーマットしたい)DD-MM-YYYYである - 私は、最初のセグメントがあることを知っています月に英語の日付。

Convert.ToDateTime("16-02-2012").ToString("dd/MM/yyyy") 

+1

@ vc74 - 明らかに質問16のコンテキストでは、月ではない日です。なぜ6人がこのコメントを却下したのか、それは理にかなっていません。MarleはDD/MM/YYYY大会を使用しています。 –

+0

@ Marle1 - あなたはコードが正しい方法で正しく動作していることを理解していますか? –

+0

@ Marle1デンマークの文化は、日付区切りとしてハイフンを使用し、日付区切りのプレースホルダとして/を使用するため動作しません。 –

答えて

1

あなたが望む形式でデータをエクスポートするには、日時などのデータを挿入し、次の例のように、セルの書式を使用することができます(あなたの日付が列Aにあると仮定した場合):

Application Excel = new Application(); 

Workbook workbook = Excel.Workbooks.Add(1); 
Worksheet sheet = workbook.Sheets[1]; 
sheet.Cells[1, 1] = DateTime.Now; 
sheet.Cells[2, 1] = DateTime.Now.AddDays(1); 
sheet.Cells[3, 1] = DateTime.Now.AddDays(2); 
sheet.UsedRange.Columns["A:A", Type.Missing].NumberFormat = "MM/dd/yyyy"; 
workbook.Sheets.Add(sheet); 

// Save the workbook or make it visible 
+0

あなたのコードでは、 'System.FormatException:Stringが有効なDateTimeとして認識されませんでした。'、セパレータは実際には関係ありません:Console.WriteLine(DateTime.Now.ToString( "MM/dd/yyyy")) ; ** 02/09/2012 ** 'Console.WriteLine(DateTime.Now.ToString(" MM-dd-yyyy ")); ** 02-09-2012 ** – qJake

+0

@SpikeXとは何ですか?あなたの文化(より正確には、DateTimeFormatInfo.CurrentInfo.DateSeparatorの値は何ですか?) –

+0

@ SpikeXあなたのコードは、私の(ヨーロッパ)マシンで次のように生成されます:Console.WriteLine(DateTime.Now.ToString( "MM/dd/yyyy")); 02-09-2012 Console.WriteLine(DateTime.Now.ToString( "MM-dd-yyyy")); 02-09-2012 –

3

変更

Convert.ToDateTime("16-02-2012").ToString("MM/dd/yyyy") 

それはちょうど誤植です。


それはあなたが望むものではない場合は、この試してみてください。そして、あなたはあなたが最後に好きな.ToString(...)追加することができます

DateTime.Parse("16-02-2012", CultureInfo.CreateSpecificCulture("da-DK")); 

を。


編集2:コンピュータは自分のカルチャで日付を出力しています。解析する場合は、が正しく表示されるように、操作ごとにカルチャ情報を提供する必要があります。

Console.WriteLine(DateTime.Parse("16-02-2012", CultureInfo.CreateSpecificCulture("da-DK")).ToString(CultureInfo.CreateSpecificCulture("da-DK"))); 
// 16-02-2012 00:00:00 
+0

セパレータが何であるかは関係ありません。 – qJake

+0

日付を16-02-2012から02/16/2012にフォーマットする必要があるときに、結果が間違って表示されるため、コードを変更することはできません – Marle1

+0

編集を参照してください。 6つ以上行く。 – qJake