DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ISDATE関数について

  • 題名: ISDATE関数について
  • 著者: よし
  • 日時: 2007/02/03 16:54:54
  • ID: 19010
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[VB.NET]
分類:[.NET]

VB.NETで開発を行っておりISDATE関数を使用して日付チェックを行っておりますが正常に稼動する端末と下記エラーが発生する端末があり解決方法が分からず困っております。

(例)ISDATE(#01/01/2007#)の値で、インデックスが配列の境界外ですのエラーメッセージで強制終了します。

正常・異常端末ともにFramework2.0はインストールされております。

異常な端末では日付け表示の際に、
”07/01/01”と表示する部分が”07 01 01”と表示される為、”/”がスペースに置き換えられているような気が致します・・・

パソコンの設定で変更出来ればいいのですが・・・

どなたかご存知ないでしょうか?
■No19010に返信(よしさんの記事)
> 異常な端末では日付け表示の際に、
> ”07/01/01”と表示する部分が”07 01 01”と表示される為、”/”がスペースに置き換えられているような気が致します・・・
> パソコンの設定で変更出来ればいいのですが・・・

"気が致します" となると、答える私も自信がなくなるのですが、
コントロール パネルの [地域と言語のオプション] を確認してみてください。
■No19011に返信(じゃんぬねっとさんの記事)
> "気が致します" となると、答える私も自信がなくなるのですが、
> コントロール パネルの [地域と言語のオプション] を確認してみてください。

ありがとうございました。
おそらくパソコンの設定と思いいろいろさがしてはいたのですが・・・

ご指摘の[地域と言語のオプション]-カスタマイズ-日付タグ-短い形式に”/”表示ではなく” ”で表示する設定がありました。
もしかしてと思い設定を変更したらすんなりと解決致しました。

ネット上でISDATE関数のことを調べておりましたら、使用することはあまりよくないということが書かれてあった為、プログラムで対応すべきかと検討しておりましたが、取り急ぎ上記設定変更で対応することにします。


じゃんぬねっとさんありがとうございました。
解決済み!
■No19012に返信(よしさんの記事)

> ご指摘の[地域と言語のオプション]-カスタマイズ-日付タグ-短い形式に”/”表示ではなく” ”で表示する設定がありました。
> もしかしてと思い設定を変更したらすんなりと解決致しました。

それはあまり本質的な解決策ではないんじゃないでしょうか。
たまたまそういう設定になっていたからうまく動かなくて、それを変更した
から正しく動くようになった、と。
ということは、また設定を変えられたら動かなくなる可能性があるわけです
よね。

> ネット上でISDATE関数のことを調べておりましたら、使用することはあまりよくないということが書かれてあった為、プログラムで対応すべきかと検討しておりましたが、取り急ぎ上記設定変更で対応することにします。

「使用することはあまりよくない」というのは、上記のように環境に依存する
部分があるからなのではないでしょうか。
できればそういった環境依存の部分をなくすために、プログラムで対応す
べきだと思いますが…
解決済み!
  • 題名: Re[3]: ISDATE関数について
  • 著者: よねKEN
  • 日時: 2007/02/05 10:42:09
  • ID: 19018
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No19012に返信(よしさんの記事)
> ご指摘の[地域と言語のオプション]-カスタマイズ-日付タグ-短い形式に”/”表示ではなく” ”で表示する設定がありました。
> もしかしてと思い設定を変更したらすんなりと解決致しました。

では、IsDate関数を使うかどうかは特に関係なかったということですね。

Console.WriteLine("A:" & DateTime.Now.ToString("yyyy/MM/dd"))
Console.WriteLine("B:" & DateTime.Now.ToString("yyyy\/MM\/dd"))

例えば、上記のようなコードを実行すると日付の区切りが" "に設定されている場合、

A:2007 02 05
B:2007/02/05

と表示されます。DateTimeの書式指定における「/」は日付の区切りを意味しますので、
「/」という文字自身を意味しません。そういうわけでパターンBのように\マークで
エスケープしてやる必要があります。
VBのFormat関数を使って日付を書式化された文字列に変更しているような場合も同様です。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板