- - PR -
[ASP.NET]日付の書式について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-28 14:37
flatと申します。
はじめまして、こんにちは。 よろしくお願いいたします 表題の件に関しまして、質問させて下さい <開発環境> Windows2000Pro VS.Net2002 .Net FrameWork1.0 IIS5 <質問内容> 上記環境(A端末)で、既存のwebアプリの修正を行っております。 webFormにて、年月日それぞれのテキストボックスを作成し システム日付をデフォルト表示させるような仕様があるのですが、 西暦(例:2005)が和暦(例:17)で出力されてしまいます。 西暦2005年を表示させようとすると、
という結果になってしまいます。 ところが、同じプログラムを別端末(B端末)にコピーして、 A端末からB端末のIIS経由で実行してみるとA端末のブラウザ でも問題なく"2005"と表示されます。 [地域]のオプションは、B端末の各設定と同じであることは確認しております
です。 また、関係ないかもしれませんが、A端末では VB6ではNOW= "2005/07/28 14:21:09" .NetではNOW=#7/28/2005 2:23:47 PM# を返します。 どこの設定が影響しているのか、ヒントをいただけませんでしょうか? よろしくお願いいたします 以上です | ||||
|
投稿日時: 2005-07-28 14:40
地域のオプションですよね。 で、それに依存したくないがために、ToString などで書式を整えるとかそういう話ではないのですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-07-28 15:56
flatと申します
じゃんぬねっと様、こんにちは 返信を有難うございます。
その通りです。そのために、常に西暦4桁で表示されるように 書式指定子:"yyyy"を使用しているつもりなのですが、 自分の開発端末では DateTime.Now.ToString("yyyy") Format(#7/28/2005 2:23:47 PM#, "yyyy") の記述だと、和暦の"17"と表示されてしまいます。 「地域のオプションが"和暦"の場合は"yyyy"指定でも、和暦が 戻ってきてしまう」というお話は過去ログであったのですが 自分の開発端末の地域のオプションは"西暦(日本語)"です。 私は何か思い違いをしているのでしょうか? 別端末のwebサーバで実行すれば、ちゃんと西暦で表示されるということは IIS側の設定かとも考えたのですが、それらしい項目も見つけられませんでした ご指摘等いただければと思います よろしくお願いいたします 以上です | ||||
|
投稿日時: 2005-07-28 18:04
CurrentCulture が異なると結果の書式影響が異なるかもしれません。
第2引数に DateTimeFormatInfo.InvariantInfo を指定してみるとどうなるでしょうか。 | ||||
|
投稿日時: 2005-07-28 21:01
flatと申します
にしざき様、こんばんは 返信有難うございます
ご指摘有難うございます ご指摘の通り、 DateTime.Now.ToString("yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo) と記述すれば、正しく西暦が表示できました。有難うございました。 基本的に、地域のオプションが"西暦(日本語)"だったら、 DateTime.Now.ToString("yyyy") でも正しく西暦が表示されると思っていてよろしいのでしょうか? 尚、今回のプログラムは客先にて稼働中であり 客先及び他の開発端末では問題なく西暦で表示されている為 全てを洗い出して変更することは難しいです。 今回は、他の開発端末を借りて作業することに致します。 今後は、必ず第2引数を指定するように癖をつけるか 一度、端末のクリーンアップを図りたいと思います。 また何か、類似例などございましたら教えて下さい 有難うございました 以上です | ||||
|
投稿日時: 2005-07-29 05:38
CultureInfo.CurrentCulture.DisplayName を出力してみてください。2つの端末で、違っていたりします?
_________________ | ||||
|
投稿日時: 2005-07-29 11:30
flatと申します
Jitta様、こんにちは 返信有難うございます
ご指摘有難うございます。 CultureInfo.CurrentCulture.DisplayNameの結果は、両端末で"日本語(日本)"でした。 ところが、このカルチャ情報を色々調べてみましたら 出ました! <和暦表示される端末> System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern =>"gg yy'年'MM'月'dd'日' dddd H:mm:ss" <西暦表示される端末> System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern =>"yyyy'年'M'月'd'日' H:mm:ss" という結果になりました。 今まで、和暦になっている情報が見つからなかっただけに、ある意味ホッとしました。 これで、一歩前進です。有難うございました。 しかし、上記の情報は"地域のオプション"の設定だと思っていたのですが・・・。 どこか別の場所でも保持されているのでしょうか? 今更こんな質問ではお叱りを受けるかもしれませんが、 CultureInfoクラスで取得されるカルチャ情報は、現在のカルチャ情報ですよね? IISもしくはVS.NETインストール時のインストール時のカルチャ情報ではありませんよね? 何はともあれ、開発をしつつ引続き調べていきたいと思います また何かご指摘いただけることがありましたら、よろしくお願いいたします 有難うございました 以上です | ||||
|
投稿日時: 2005-07-29 22:33
なんでしょうね?MSDN にあたってみましたが、地域のオプションから取得する、と書いてあります。あっと、ユーザ設定を上書きするのがどうこう、ってのがあったな。ちょっと、もう一度読み直して、理解できたら何か書きます。 _________________ |