VB.NETのCDate型変換について


LOVESONY  2005-12-27 01:14:12  No: 93411

はじめまして。
VB.NETにて開発をしているものなのですが今、とても困っている事があります。

コントロールパネルの地域と言語の設定に関わらずCDate変換で同じ値を取得するというのは不可能なのでしょうか?

例えば以下のコードでは最終的にbの値が#12/26/3993 12:00:01 AM#になってしまいます。
(地域と言語の日付タブの短い形式の設定が[平成 17/12/26]の時)
a = "#12/26/2005 0:00:01 AM#"
a = VB6.Format(a, "yyyy/mm/dd")
b = CDate(a)

同じように地域と言語の日付タブの短い形式の設定が[05/12/26]の時は以下のような値が取得できます。
#12/26/2005 12:00:01 AM#

もし知っている方がいらっしゃったらご教授願えればと思います。
よろしくお願いいたします。。。


特攻隊長まるるう  2005-12-27 02:49:29  No: 93412

CDate は関係ない。Format の問題…というのを1年位前に書いた気はする。
…が、今テストすると和暦設定で正常に 2005 と取れたりする(謎)…Windows Update
で直ったりするのかも(?)

…それにしても妙なサンプル
>a = "#12/26/2005 0:00:01 AM#"
>a = VB6.Format(a, "yyyy/mm/dd")
>b = CDate(a)
VB6は…まぁ、Microsoft.VisualBasic 名前空間だとしても
うちの環境だと a が日付型でないと正常に動作しません。
だとすると暗黙的に型変換されてるからますます CDate
の意味が不明。[VB.NET2005]の話とかなのかな???

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8991&forum=7&5
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200504/05040068.txt


LOVESONY  2005-12-27 03:39:25  No: 93413

お返事ありがとうございます!

>CDate は関係ない。
との事なのですが、それは表示形式上の物だけで値としては持っている物は環境に左右される訳ではないからと考えてもいいでしょうか!?

それとVB6.Format(a, "yyyy/mm/dd")の戻り値は私の環境ではString型になっています。

ちなみに書き忘れてしまい、補足なのですが
a → String型
b → Date型
です!

環境はVB.NET、WinXPです!

ただ単純にシステムで和暦になっていたとしても西暦を使用したいだけなのですが日付は難しいですね・・・汗


LOVESONY  2005-12-27 06:10:35  No: 93414

すいませんせっかくリンクを張って頂いていたのに見落としていました!
先ほど熟読させて頂き、以下メソッドを使用して解決する事ができました。

Application.CurrentCulture = CultureInfo.InvariantCulture;

本当にありがとうございますm(__)m


じゃんぬねっと  URL  2006-01-02 19:43:27  No: 93415

a の型が判らないので混乱しますね。
最初の時点で、DateTime.Parse メソッドを使えば良いんですが。


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

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






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