OS:windows2000 SP4(コーディングPC、実行PCともに)
VB:VB6.0S P4
「2005/ 1/ 1」
という文字列をCDate関数を使って
「2005/01/01」
という風に変えます。
コーディングするパソコンでは問題なく変換されるのですが、
それを実行する別のパソコンで見ると
「05/01/01」
という文字に変換されてしまいます。
それでMSDNで調べたら、
「CDate 関数は、国別情報に基づいて日付の形式を認識します。認識できない形式で指定された日付がある場合、年、月、および日の正しい順序を判断できないことがあります。」
と書いてありました。
これはPCの問題なのでしょうか?
それともプログラムに問題があるのでしょうか?
詳しい方よろしくおねがいします。
>「2005/ 1/ 1」
>という文字列をCDate関数を使って
>「2005/01/01」
>という風に変えます。
文章から察するに文字列のフォーマットを変換したいだけのように
受け取れるのですが、Date型に変換する必要はあるのですか?
フォーマットだけの問題ならFormat関数でいいのでは?
>それでMSDNで調べたら、
>「CDate 関数は、国別情報に基づいて日付の形式を認識します。
>認識できない形式で指定された日付がある場合、年、月、および日の正しい順序を判断できないことがあります。」
今回の場合、これは関係ないかと。
OSの違いかな。Mow関数でも同様な現象が出ます。
だから「通ってみた」さんがおしゃるようにFormat関数を使用してみたらいかがでしょうか。
CDateで日付型に変換した場合、それを暗黙のうちに文字列型に変換する場合は、
コントロールパネルの「短い日付の書式」の影響を受けて、
>コーディングするパソコンでは問題なく変換されるのですが、
>それを実行する別のパソコンで見ると
>「05/01/01」
ということになることがあります。
諸氏の指摘どおり、
CDate後の日付型→文字列型への変換では、
Format関数で書式を明示されるのがよろしいかと。
PCの設定だったのですね。
ありがとうございました。
| ツイート |
|