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

このQ&Aのポイント
  • VB2010環境でのDateTime.ParseExactの使用方法についてハマっています。
  • 参考ページを使って練習しているが、エラーが出ています。
  • 日付のフォーマットが間違っているのかもしれません。
回答を見る
  • ベストアンサー

DateTime.ParseExactについて

DateTime.ParseExactについてハマっております。 VB2010環境にてDateTime.ParseExactの質問をさせてください。 http://www.atmarkit.co.jp/fdotnet/dotnettips/203dateparse/dateparse.html こちらのページを参考して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) どこが間違っているのでしょうか。 ご指導のほど、よろしくお願い致します。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.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) といった具合にして見ましょう

letter-fin
質問者

お礼

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

関連するQ&A

  • DATETIME型からUNIX時間を求める方法

    現在、MYSQL、DATETIME型 YYYY-MM-DD HH:MM:SS からUNIX時間を求める際に、気軽に質問出来る詳しい方が知り合いにおらずPHP学習中で知識が乏しいため、YYY-MM-DD HH:MM:SS をスペースで分割、をハイフンで分割、HH:MM:SSをコロンで分割、その後、mktimeに当てはめてUNIX時間を求めています。 他に簡単にDATETIME型からUNIXTIME求める関数などがありましたらご教示頂けましたら嬉しいです。 それとも、計算が必要な日時をMYSQLに格納する場合はINSERTする場合にUNIX時間でINSERTし、表示が必要な場合に、DATE関数等で日時として表示する方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • Date型へのキャストについて

    VB.NET初心者です。 String型からDate型へキャストをしたいのですが、よそのサイト様を参考にいろいろ試してみたのですが、うまくいかず困っています。どなたか、教えてください。よろしくお願いします。 エラー:『文字列は有効なDateTimeではありません』 Dim str1 As String = "2009/08/01" または Dim str2 As String = "2009/08/01 12:00:00" str2 = str2.substring(0,10).replacce("/","") の形式で取得した値を"yyyy/mm/dd形式で"Date方へキャストしたいのですが.... Dim dt As Date = Date.ParseExact(str, "yyyy/MM/dd", Nothing) Dim dt As Date = Date.parse(str) Dim dt As Date = Ctype(str, Date) など試してみたのですが、#8/1/2009#のように書式がおかしいのですが、どこを直せばよいのでしょうか? Date.ParseExact()でできると思っていたのですが、悩んでいます。よろしくお願いします。

  • 秒数変換

    秒数を入力してそれが何日、何時間、何分、何秒に変換するプログラムを作りたいのですが Sub 秒数変換() Dim tt As Long, dd As Long, hh As Long, mm As Long, ss As Long tt = ("秒数を入力してください") mm = tt \ 60: ss = tt Mod 60 hh = mm \ 60: mm = mm Mod 60 dd = hh \ 24: hh = hh Mod 24 MsgBox tt & "秒は" & dd & "日" & hh & "時間" & mm & "分" & ss & "秒です" End Sub 自分で考えてこう作成したのですが、実行すると型があっていませんと表示がでます。なぜでしょう?

  • 「EXCEL」VBAで日付を変換

    ファイルを保存する際に現在時刻を元にファイル名を作成しそれで保存する、というものを作っています。 ですが、 yyyy/mm/dd hh:mm:ss ↓ yyyymmddhhmmss というような変換がウマくいかずに困っています。 どなたか、ご教授頂きたいです。

  • VB2005でのミリ秒の取得について(Mobile)

    お世話になります。 現在、Windows Mobile5.0 向けのアプリケーションを VB2005で作成しています。 アプリケーションの各処理の処理時間を細かく知りたいと思い、 ログに処理時間をミリ秒まで出力しようとしています。 Dim dtNow As DateTime = DateTime.Now outputStr = "[" & dtNow.ToString("yyyy/MM/dd HH:mm:ss") & dtNow.Millisecond.ToString & "]" と記述したのですが、ミリ秒の部分が 0 しか返しません。 普通のWindowsアプリケーションの場合だと上記記述で取得できるのですが、 Mobile5.0/ .NET CF2.0 では異なるのでしょうか? ご存じの方、教えてください。

  • シェル内で「'」に囲まれた部分への変数の展開

    oracleにアクセスするシェルを作成しており、期間指定の部分を変数で 指定したいと思っています。 しかしシングルクォーテーションに囲まれた部分の扱い方がよくわからず、 やむを得ず、変数内にクォーテーションを持たせ対処しました。 具体的には【現状】に示すようなコードです。 【現状】でも動くには動くのですが、将来的にはシェルの引数として 渡して実行したい為、出来れば変数内にはクォーテーションを持たせず 【希望】に示すイメージのコードにしたいと思っています。 単にエスケープの仕方の問題のような気がしているのですが、 なかなかうまくいきません。 変数の定義の部分が【希望】のとおりであれば、SQL部分の文字列は 多少変えてしまっても問題ありません。 シェル内で「'」に囲まれた部分への変数の展開させる方法、 これを教えてください。 よろしくお願いします。 --【現状】------------------------------------- FROM_DATETIME="'2010-10-10 00:00:00'" TO___DATETIME="'2010-12-10 00:00:00'" sqlplus scott/tiger@oracle << EOT select count(*) from tablename where columnname between to_date(${FROM_DATETIME}, 'YYYY-MM-DD HH24:MI:SS') and to_date(${TO___DATETIME}, 'YYYY-MM-DD HH24:MI:SS') / quit EOT ----------------------------------------------- --【希望】------------------------------------- FROM_DATETIME=2010-10-10 00:00:00 TO___DATETIME=2010-12-10 00:00:00 sqlplus scott/tiger@oracle << EOT select count(*) from tablename where columnname between to_date(\'${FROM_DATETIME}\', 'YYYY-MM-DD HH24:MI:SS') and to_date(\'${TO___DATETIME}\', 'YYYY-MM-DD HH24:MI:SS') / quit EOT -----------------------------------------------

  • YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法

    YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法 お世話になっております。 今回の質問内容なのですが、 あるテーブルにYYYYMMDDhhmmss形式(varchar(14))の列がありまして、 この値の時刻計算を行いたいと思っております。 YYYY/MM/DD hh:mm:ss形式であれば、DATEADD関数で 計算が可能なのですが、やり方がわからず苦戦しております。 例えば1秒加算させたいと思い、以下のSQL文を実行してみたのですが、 SELECT DATEADD(second,1,(CONVERT(DATETIME,'20100312111111'))) 「文字列から日付/時刻に変換できませんでした。」というエラーが 発生してダメでした。 時刻部分だけ取り出して、それに時分秒を分ける「:」をつけて変換し 計算するという方法は極力避けたいと思っています。 何かいい方法がありましたら、ご教示のほどよろしくお願い致します。

  • MySQLのTimestamp(14)型のフィールドにYYYY/MM/DD hh:mm形式のデータをインサートするには

    MySQLのTimestamp(14)型のフィールドに YYYY/MM/DD hh:mm形式のデータをインサートするには どのようにしたらよいのでしょうか? MySQL の Timestamp(14)型(YYYY-MM-DD hh:mm:ss)のフィールドに YYYY/MM/DD hh:mm 形式のデータ(ssに該当するデータがない)を インサートするには、 PHPでどのようにしたらよいのでしょうか? できれば、インサートの際にssに自動的に00をつけたいです。 現在、PHPでinsert文を実行すると、データの桁数が足りないため、 フィールドの値は、0000-00-00 00:00:00になってしまいます。 同じ形式(YYYY/MM/DD hh:mm)のデータをphpMyAdminで インポートすると、自動的にssに00がつき、 YYYY-MM-DD hh:mm:ss(例 2009-10-20 12:10:00) となってくれます。 PHPでもphpMyAdminと同じ処理をしたいのですが、 インターネットで検索してもやり方が見つからず、 どのようにしたらよいのか、わかりません。。。 インサートするデータサイズが83MBと大きいので、 PHPで処理したいと思っています。 (phpMyAdminは8MBまでなので) ご存知の方がいましたら、教えていただけると、 助かります。m(_ _)m レンタルサーバー:さくら インサートするファイル:CSVファイル PHP 5.2.x MySQL 5.1 phpMyAdmin 3.1.3.1

    • ベストアンサー
    • MySQL
  • 【Access】できればクエリにて 日付(yyyy/mm/dd)+時間(hh:mm)の計算 

    いつもお世話になります。 フィールド「日付」:日付 (S) ~YYYY/MM/DD形式~ と フィールド「時間」:時刻 (S) ~HH/MM形式~ があります。 これらを合算し、 (1)日付 (標準)  ~YYYY/MM/DD HH:MM:SS形式~ (2)日付 (標準?) ~YYYY/MM/DD HH:MM形式~ にしたいのですが、 レコードの更新欄ではどのようにビルドさせればよろしいでしょうか? 教えていただけますでしょうか? よろしくお願いします。

  • N分毎のログの呼び出し

    前日の全レコードに対して、1分につき1レコードを10時間分ほど取得したいのですが、どのようなSQL文を書けばよいのでしょうか。 1分間に大体5~10個程度のレコードがあります。秒については何秒でも良いので、指定が出来る出来ないはどちらでも良いです。 下記のようなテーブル構造になっています。 (カンマを区切り記号として使ってます。本当にカンマがあるわけではありません。) YYYY-MM-DD HH:MM:SS(メインキー),AAAA(キー1),BBBBBB(キー2) 日時を表す【YYYY-MM-DD HH:MM:SS】をキーとして、 1分毎にセレクトしたいのです。 例えば、結果が下記のようになるように 1.2008-02-14 01:40:SS ,AAAA,BBBB 2.2008-02-14 01:41:SS ,AAAA,BBBB 3.2008-02-14 01:42:SS ,AAAA,BBBB 4.2008-02-14 01:43:SS ,AAAA,BBBB 5.2008-02-14 01:44:SS ,AAAA,BBBB

    • ベストアンサー
    • MySQL

専門家に質問してみよう