C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: 日付の表示をyyyy/mm/ddに戻したい


(過去ログ 94 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■56327 / inTopicNo.1)  日付の表示をyyyy/mm/ddに戻したい
  
□投稿者/ ペンギン (5回)-(2011/01/10(Mon) 16:07:44)

分類:[.NET 全般] 

こんにちは

現在システムのWindows7対応で、
OSのバージョンアップに伴うアプリケーション側の改修を行っております。

■環境
 [旧環境]
  OS:WindowsXP
  開発ツール:VisualStudio2003
  開発言語:C#
  ミドルウェア:.NetFrameWork1.1
  Oracle:OracleDatabase 9.2.0.8
      Oracle Client 9.2.0.8
      Oracle Data Provider for .NET 9.2.0.4.0
      Oracle Provider for OLE DB 9.2.0.4.0

 [新環境]
  OS:Windows7
  開発ツール:VisualStudio2010
  開発言語:C#
  ミドルウェア:.NetFrameWork4.0
  Oracle:OracleDatabase 9.2.0.8
      Oracle Client 11.2.0
      Oracle Data Provider for .NET 4 11.2.0.1.2
      Oracle Provider for OLE DB 11.2.0.1.0

■現象
 日付の表示が以下のように変更してしまいます。
 
 旧環境→2010/12/31
 新環境→2010年12月31日
 
■質問
 新環境での日付表示を旧環境と同様のyyyy/mm/ddにしたいです。
 変更方法を教えて頂けないでしょうか。
 
■参考
 日付表示は以下のようにグリッドにパラメータをセットして実施しております。
 
--------------------------------------------------------------------------------
DataColumn dcc = new DataColumn();
dcc = new DataColumn(namee, System.Type.GetType("System.DateTime"));
dcc.AllowDBNull = true;
dcc.DefaultValue = null;
dcc.Caption = namej;
dcc.ColumnName = namee;
PB.DATA_DS.Tables[frmID].Columns.Add(dcc);
--------------------------------------------------------------------------------
引用返信 編集キー/
■56328 / inTopicNo.2)  Re[1]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ ペンギン (6回)-(2011/01/10(Mon) 16:12:49)
何か足りない情報がございましたら補足します。

よろしくお願いします。
引用返信 編集キー/
■56329 / inTopicNo.3)  Re[2]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ Hongliang (745回)-(2011/01/10(Mon) 16:50:05)
DateTime 型には、その日付をどう表示するかなんて情報はありません。
ある日時型のデータをどう表示するかは、そのデータを表示する側の担当です。
アプリケーションは、特に指定していなければ OS の「地域と言語」設定で指定されている表示形式を使用します。
あるいはコントロール個別に表示形式を指定する場合、たとえば System.Windows.Forms.DataGrid であればDataGridTextBoxColumn.Format プロパティ(および FormatInfo プロパティ)で指示できます。
引用返信 編集キー/
■56330 / inTopicNo.4)  Re[3]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ ペンギン (7回)-(2011/01/10(Mon) 18:48:41)
ご返信ありがとうございます。

当問題ですが、OS の「地域と言語」設定の「時刻(長い形式)」を変更することで、
旧バージョンと同様にyyyy/mm/ddで表示することが出来ました。
yyyy/mm/ddで表示される設定は以下の通りです。

yyyy'年'M'月'd'日'→×
yyyy'年'MM'月'dd'日'→×
yyyy'年'M'月'd'日' dddd→○
yyyy'年'MM'月'dd'日' dddd→○

旧環境で試したところ、「時刻(短い形式)」の変更が反映されていたため、
.NetFramework1.1から2.0へバージョンアップした際に
「時刻(長い形式)」を参照するようになったということでしょうか。

http://itpro.nikkeibp.co.jp/article/COLUMN/20061127/254970/

問題は解決しました。どうもありがとうございました。
解決済み
引用返信 編集キー/
■56331 / inTopicNo.5)  Re[4]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ よねKEN (661回)-(2011/01/10(Mon) 19:26:54)
No56330 (ペンギン さん) に返信
> 旧環境で試したところ、「時刻(短い形式)」の変更が反映されていたため、
> .NetFramework1.1から2.0へバージョンアップした際に
> 「時刻(長い形式)」を参照するようになったということでしょうか。

特にそういう変更にはなっていないと思います。

老婆心ながら、そもそもの話として、環境依存の動作をさせたくないところの処理で、
環境によって正しく動作しないのはぺんぎんさんの所のプログラムの元々の障害だと思われます。
OSの環境をいじって解決とするのではなく、根本的な問題を抱えているプログラムを修正された方がよいと思いますよ。

#設計者やお客様と相談の上、そのような対処になったのであれば仕方ありませんが、
#障害の根本原因を取り除いていないのは後々のトラブルの元です。そういう解決手段は最終手段とした方がよいです。


引用返信 編集キー/
■56332 / inTopicNo.6)  Re[5]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ shu (346回)-(2011/01/10(Mon) 21:09:07)
No56331 (よねKEN さん) の返信を参考にしてもらうとして

Labelなどに表示する為の文字列変換は以下のようになります。
Dim dtTmp as Date
dtTmp = ・・・・

Label1.Text = dtTmp.ToString("yyyy/MM/dd") '<--- mmではない。


表示するコントロールにより日付の表示形式を指定出来る場合もあります。
No56329 (Hongliang さん) の内容を参考

引用返信 編集キー/
■56333 / inTopicNo.7)  Re[6]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ Azulean (675回)-(2011/01/10(Mon) 21:48:48)
No56332 (shu さん) に返信
> Label1.Text = dtTmp.ToString("yyyy/MM/dd") '<--- mmではない。

"/" という文字も実行環境によって依存するはずです。
書式指定子に "/" がある点をご確認ください。
http://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx
引用返信 編集キー/
■56335 / inTopicNo.8)  Re[7]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ shu (347回)-(2011/01/10(Mon) 22:33:19)
No56333 (Azulean さん) に返信
> ■No56332 (shu さん) に返信
>>Label1.Text = dtTmp.ToString("yyyy/MM/dd") '<--- mmではない。
>
> "/" という文字も実行環境によって依存するはずです。
> 書式指定子に "/" がある点をご確認ください。
> http://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx

短い形式を変更するとそれに従ってしまうという事ですね。
そうしたら 『/』 => 『\/』にした方が依存がなくなるということかな?
引用返信 編集キー/
■56341 / inTopicNo.9)  Re[8]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ 魔界の仮面弁士 (2015回)-(2011/01/11(Tue) 11:06:29)
No56335 (shu さん) に返信
>>> Label1.Text = dtTmp.ToString("yyyy/MM/dd") '<--- mmではない。
>>"/" という文字も実行環境によって依存するはずです。
> そうしたら 『/』 => 『\/』にした方が依存がなくなるということかな?

まだ不足です。この場合、引数にカルチャも含めておいた方が良いでしょう。

そうしないと、OS の地域設定によって
 (西暦の)2011/01/11
 (日本/和暦の)23/01/11
 (韓国/檀紀の)4344/01/11
といった揺れが生じる可能性があります。

OS の地域設定で日付を和暦モードにして、アプリが正常に稼働するか確認しておくことをお奨めします。
引用返信 編集キー/
■56344 / inTopicNo.10)  Re[9]: 日付の表示をyyyy/mm/ddに戻したい
□投稿者/ shu (349回)-(2011/01/11(Tue) 13:02:21)
No56341 (魔界の仮面弁士 さん) に返信
> ■No56335 (shu さん) に返信
> >>> Label1.Text = dtTmp.ToString("yyyy/MM/dd") '<--- mmではない。
> >>"/" という文字も実行環境によって依存するはずです。
>>そうしたら 『/』 => 『\/』にした方が依存がなくなるということかな?
>
> まだ不足です。この場合、引数にカルチャも含めておいた方が良いでしょう。
>
> そうしないと、OS の地域設定によって
>  (西暦の)2011/01/11
>  (日本/和暦の)23/01/11
>  (韓国/檀紀の)4344/01/11
> といった揺れが生じる可能性があります。
>
> OS の地域設定で日付を和暦モードにして、アプリが正常に稼働するか確認しておくことをお奨めします。
なるほど、そこまで考慮するといっそのこと
String.Format("{0:0000}\/{1:00}\/{2:00}", dtTmp.Year, dtTmp.Month, dtTmp.Day)
としてしまうのも1つの手かも?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -