Q109:テーブルデータをCSVファイルへ出力するときに、指定した書式で日付データを出力する方法。
Q109-1:
MZプラットフォームのテーブルデータをCSVファイルにて出力した際の日付データフォーマットに関して、質問があります。
現在、MySQLのデータを読み込み、テーブルデータとして格納した後、そのデータをCSVにて出力することを考えております。
MZプラットフォームのCSV出力は以下のようにしております。
接続元コンポーネント:ボタン「CSV出力」
発生イベント:アクションイベント
接続先コンポーネント:ファイル選択「CSV出力ファイル選択」
起動メソッド:単数Save用ファイル選択ダイアログを表示する(Component)
引数0 取得方法:コンポーネント
コンポーネント:フレーム
接続元コンポーネント:ファイル選択「CSV出力ファイル選択」
発生イベント:データ選択イベント
接続先コンポーネント:CSV出力「CSV出力」
起動メソッド:指定のファイル名でCSVデータを書き込む(String,PFObjectTable)
引数0 取得方法:イベント内包
メソッド/値:選択データ
引数1 取得方法:メソッド戻り値
コンポーネント:テーブル(MySQLから読み込んだデータ)
メソッド/値:テーブルデータを取得する
MySQL側では、日付を入れたフィールドはdateタイプ型にしてあり、データ例としては、"2010-12-04"となっています。
そのデータをMZプラットフォームのテーブルデータとして読み込むと、"2010/12/04
0:00:00"と表示されます。
それをCSVデータで出力すると、"Sat Dec 04 00:00:00 JST 2010"となってしまいます。
私としては、MZのテーブルデータでは"2010/12/04"と表示され、かつ、CSVデータとして出力する際は、"2010-12-04"という形で出力したいのですが、それぞれ、上記のような表示結果となってしまいます。
MZプラットフォームでは、javaのDateクラスをそのまま出力した形"Sat Dec 04 00:00:00
JST 2010"しか出力できないのでしょうか?
A109-1:
ご指摘の通り、テーブルデータをCSVファイルへ出力するときには、そのままでは日付データはjava.util.Dateクラスの標準書式文字列として出力されます。従いまして、指定した書式で日付データを出力する場合には、あらかじめ日付データ列を指定書式の文字列データに変換したテーブルを作成し、それをCSV出力することになります。
日付データの書式指定文字列を取得するには、カレンダーコンポーネントを使います。カレンダーコンポーネントに日付データを設定し、「書式指定によるカレンダー文字列表現の取得(String)」メソッドを実行することで日付データの書式指定文字列を取得できます。また、「書式指定によるカレンダー文字列表現リストの取得(PFObjectList,String)」メソッドを使えば、日付データのリストから書式指定文字列のリストを作成できます。
ご参考までに、簡単なサンプルを用意しましたのでご覧ください。テキストフィールドに書式指定文字列を入力し、[日付→文字列変換]ボタンをクリックすると日付データ列が書式指定文字列データに変換されたテーブルが作成されます。
関連ファイル:TableDateToString.mzax