CDate関数で結果が変

解決


ネオンライトイリュージョン  2006-01-25 14:39:44  No: 129831

OS:windows2000 SP4(コーディングPC、実行PCともに)     
VB:VB6.0S P4

「2005/ 1/ 1」
という文字列をCDate関数を使って
「2005/01/01」
という風に変えます。

コーディングするパソコンでは問題なく変換されるのですが、
それを実行する別のパソコンで見ると
「05/01/01」
という文字に変換されてしまいます。


それでMSDNで調べたら、
「CDate 関数は、国別情報に基づいて日付の形式を認識します。認識できない形式で指定された日付がある場合、年、月、および日の正しい順序を判断できないことがあります。」

と書いてありました。


これはPCの問題なのでしょうか?
それともプログラムに問題があるのでしょうか?
詳しい方よろしくおねがいします。


通ってみた  2006-01-25 14:51:58  No: 129832

>「2005/ 1/ 1」
>という文字列をCDate関数を使って
>「2005/01/01」
>という風に変えます。
文章から察するに文字列のフォーマットを変換したいだけのように
受け取れるのですが、Date型に変換する必要はあるのですか?
フォーマットだけの問題ならFormat関数でいいのでは?

>それでMSDNで調べたら、
>「CDate 関数は、国別情報に基づいて日付の形式を認識します。
>認識できない形式で指定された日付がある場合、年、月、および日の正しい順序を判断できないことがあります。」
今回の場合、これは関係ないかと。


nameless  2006-01-25 15:04:15  No: 129833

OSの違いかな。Mow関数でも同様な現象が出ます。
だから「通ってみた」さんがおしゃるようにFormat関数を使用してみたらいかがでしょうか。


もげ  2006-01-25 15:21:04  No: 129834

CDateで日付型に変換した場合、それを暗黙のうちに文字列型に変換する場合は、
コントロールパネルの「短い日付の書式」の影響を受けて、
>コーディングするパソコンでは問題なく変換されるのですが、
>それを実行する別のパソコンで見ると
>「05/01/01」
ということになることがあります。

諸氏の指摘どおり、
CDate後の日付型→文字列型への変換では、
Format関数で書式を明示されるのがよろしいかと。


ネオンライトイリュージョン  2006-01-25 15:26:19  No: 129835

PCの設定だったのですね。
ありがとうございました。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加