- PR -

NT上のDateTiime.ToString()

1
投稿者投稿内容
ぼー
会議室デビュー日: 2004/05/08
投稿数: 2
投稿日時: 2004-05-08 23:28
NT上で他のOS(Win2k,WinXP)とToString()が返す文字列が異なっているのですが
この点についてご存知もしくはご確認いただける方はいらっしゃらないでしょうか。

例えばDateTime.Today.ToString()とした場合
"2004/05/08 0:00:00"(Win2k,WinXP)
"2004/05/08 午前 12:00:00"(WinNT)
となります。
MSDNを読むとToString()はToString("G",null)と等価であると書かれています。
手元でNT環境がなくSPのバージョンも確認できないのですが、
XP上でCultureはja-JPとなっていることは確認しています。

XP上のja-JPなカルチャでも時刻部分が"0:00:00"という書式で返しているにもかかわらず
NT上だとどうして日本語が入った形で返ってくるのでしょう…

問題自体はうっかりToString()を使った文字列をDBへのINSERT文に使ってしまっていたことで
発覚したのですが、これ自体はきちんと書式指定をして出力すべきでした。
#日付部分は変わらないようなのですがToShortDateString()を使っていた部分も
#書き換えた方がよいのでしょうね。

よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-05-09 00:01
引用:

ぼーさんの書き込み (2004-05-08 23:28) より:

例えばDateTime.Today.ToString()とした場合
"2004/05/08 0:00:00"(Win2k,WinXP)
"2004/05/08 午前 12:00:00"(WinNT)
となります。
MSDNを読むとToString()はToString("G",null)と等価であると書かれています。




OSの違いではなく、各環境での[コントロールパネル]の
[地域のオプション]の[日付]タブの設定の違いによるものです。

自分の意図する通りに文字列化したければ、そのようにフォーマット指定しましょう。

例えば、
DateTime.Today.ToString("yyyy/MM/dd",System.Globalization.DateTimeFormatInfo.InvariantInfo)



DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss",System.Globalization.DateTimeFormatInfo.InvariantInfo)

のように指定すれば、例えば、
"2004/05/08"と"2004/05/08 23:59:12"
のような結果を取得できます。


[ メッセージ編集済み 編集者: よねKEN 編集日時 2004-05-09 00:02 ]
ぼー
会議室デビュー日: 2004/05/08
投稿数: 2
投稿日時: 2004-05-09 00:10
ご回答ありがとうございます。
DateTimeFormatInfo クラスの説明にありますね。
確認不足でした…
1

スキルアップ/キャリアアップ(JOB@IT)