- PR -

和暦環境における日付のFormat

1
投稿者投稿内容
天邪鬼
会議室デビュー日: 2004/01/30
投稿数: 8
投稿日時: 2004-01-30 15:07
Win2k pro, VB.NET

日付をFormatする際、Format(日付, "yyyy")のようにしているのですが
PCの環境が以下のようになっている場合、期待した値が得られません。

コントロールパネル>地域のオプション>日付で
カレンダーの種類を「和暦」とした場合

この場合、Format(Now, "yyyy")の値は16(平成16年?)となってしまいます。

OSのカレンダー設定に関わらず、Format(Now, "yyyy")で2004という値を得るためには
どのようにすればよいのでしょうか?
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-01-30 15:56

Now.ToString( "yyyy", DateTimeFormatInfo.InvariantInfo );
でカルチャに依存しない書式になるみたいです。

天邪鬼
会議室デビュー日: 2004/01/30
投稿数: 8
投稿日時: 2004-01-30 16:28
ゆうじゅんさん、ありがとうございます。
ただ、既にかなりの量のコードを書いてしまっているので
できればどこか1カ所の修正で何とか出来ないかと思っているのです。

OS環境が一定でない場合、Format関数は使うべきではなかったのでしょうか・・・
なんとかお知恵を拝借できれば幸いです。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-01-30 16:57
Windowsアプリなら
Main関数で

Application.Runする前に
Application.CurrentCulture = CultureInfo.InvariantCulture;
を入れてみたらどうでしょうか?

くわしくはヘルプで「カルチャ」を条件に検索してみてください。
天邪鬼
会議室デビュー日: 2004/01/30
投稿数: 8
投稿日時: 2004-01-30 17:52
ありがとうございます!教えていただいた方法で、おおよそ解決しました。

あとひとつ、解決できていないのが、dtPickerなのですが、
現在dtPickerにはカスタムフォーマットでyyyy/MM/ddを指定していて
ここに日付型の値を放り込むと、和暦環境では16/01/30になってしまいます。

見た目の問題だけ、と言ってしまえばそうなので、
お客様と相談してみます。

ゆうじゅんさん、本当にありがとうございました。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-01-30 18:08
引用:

天邪鬼さんの書き込み (2004-01-30 17:52) より:

あとひとつ、解決できていないのが、dtPickerなのですが、
現在dtPickerにはカスタムフォーマットでyyyy/MM/ddを指定していて
ここに日付型の値を放り込むと、和暦環境では16/01/30になってしまいます。

見た目の問題だけ、と言ってしまえばそうなので、
お客様と相談してみます。




もしどうしても対応しなくてはならなくなったら、↓に書いてある「コールバック フィールドを使用してカスタム書式を作成する」を参考にしてはどうでしょうか?

http://www.microsoft.com/japan/developer/library/VBCon98/vbconusingdatetimepickercontrol.htm
1

スキルアップ/キャリアアップ(JOB@IT)