• ベストアンサー

[C#]文字列の編集について

VSS2005でC#の勉強をしています。 "20070216 235959"という文字列を"2007/02/16 23:59:59"に整形し DateTimeにパースして「2007年2月16日(金) 23:59:59」と表示したいのですが "2007/02/16 23:59:59"からDateTimeにパースすることは出来ましたが "20070216 235959"を"2007/02/16 23:59:59"に編集する処理が分かりません。どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

string hoge = "20070216 235959"; string format = "yyyyMMdd HHmmss"; datetime hogehoge = DateTime.ParseExact(hoge,format,null); string hage = hogehoge.ToString("F"); System.Diagnostics.Debug.WriteLine(hage); パースまで行っているのになんで???

参考URL:
http://msdn2.microsoft.com/ja-jp/library/w2sa9yss(VS.80).aspx
pm1100
質問者

お礼

No1の方へのお礼登校フォームをしばらく開きっぱなしにしていたので 気づくのが遅れましたが、ありがとうございました。これはシンプルですね。 というかParseでそのまま指定してやれば良かったのですね・・・・・ No1の方へのお礼にも書きましたがString.Formatで文字列を変えてからやらねばだめだと思い込んでいたので String.Format("{0:yyyy/MM/dd HH:mm:ss", "20070216 235959"); String.Format("####/##/## ##:##:##", "20070216 235959"); などと繰り返して悶々としていました。

その他の回答 (2)

noname#26650
noname#26650
回答No.3

No.1の者です。 あまりに手でゴリゴリとやりすぎました。 いいかげんな回答ですみません。

noname#26650
noname#26650
回答No.1

Cでの例です。C#ではどうなるか、わかりません。 #include <stdio.h> int main(void) {   char str1[] = "YYYYMMDD hhmmss";   char str2[40]; /* 適切なサイズにする */   int i, j;      for (i = j = 0; str1[i];) {     str2[j++] = str1[i++];     if (i == 4 || i == 6)       str2[j++] = '/';     if (i == 11 || i == 13)       str2[j++] = ':';   }   str2[j] = '\0';   printf("変換前:%s\n", str1);   printf("変換後:%s\n", str2);   return 0; } (注)インデントのため、全角空白を使っています。

pm1100
質問者

お礼

ありがとうございました。Format関数で書式指定して変換することばかり考えていたのですが単純に連結すれば良かったのですね。 C#で以下のように記述してみたところ、期待する値が取得できました。  string str1 = "20070216 235959";  StringBuilder sb = new StringBuilder();  for (int i = 0; i<str1.Length; i++)  {     sb.Append(str1[i]);     if (i == 3 || i == 5)     {        sb.Append("/");     }     if (i == 10 || i == 12)     {        sb.Append(":");     }  }  DateTime dt = DateTime.Parse(sb.ToString());  Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss"));

関連するQ&A

専門家に質問してみよう