プロが教えるわが家の防犯対策術!

DateTime.ParseExactについてハマっております。

VB2010環境にてDateTime.ParseExactの質問をさせてください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/203 …
こちらのページを参考してDateTime.ParseExactの使い方を練習しております。

この2つについては希望通り出力されました。

Dim d, f As String
Dim dt As DateTime

d = "20040824202306"
f = "yyyyMMddHHmmss"
dt = DateTime.ParseExact(d, f, Nothing)

d = "2004年08月24日20時23分06秒"
f = "yyyy年MM月dd日HH時mm分ss秒"
dt = DateTime.ParseExact(d, f, Nothing)


しかし、これについてエラーが出てしまいます。
d = "2004/08/24 20:23:06"
f = "yyyy/MM/dd HH:mm:ss"
dt = DateTime.ParseExact(d, f, Nothing)

「FormatException はハンドルされませんでした。
 文字列は有効な DateTime ではありませんでした。」

試しに日付だけにして試してみましたがやはり同じエラーが出ます。
d = "2004/08/24"
f = "yyyy/MM/dd"
dt = DateTime.ParseExact(d, f, Nothing)

どこが間違っているのでしょうか。
ご指導のほど、よろしくお願い致します。

A 回答 (1件)

Windowsの地域設定の中の日付の区切り文字が『/』以外に設定されていませんか



Dim Cul as new System.Globalization.CultureInfo("ja-JP")
dim ss as string = cul.DateTimeFormat.DateSeparator
if ss<>"/" then
  d = d.Relpace("/",ss)
  f = f.Replace("/",ss)
end if
dt = DateTime.ParseExact(d, f, Nothing)
'
' または
'
' if ss<>"/" then
'   cal.DateTimeFormat.DateSeparator = "/"
' end if
' dt = DateTime.ParseExact(d, f, cul)

といった具合にして見ましょう
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご指摘頂きました方法で実行し、希望通りの出力を得ることができました。
自分一人では1週間悩んでも解決できなかったと思います。
本当にありがとうございました。

お礼日時:2012/03/06 13:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!