西暦の異常

  • このトピックには5件の返信、3人の参加者があり、最後にsaitoにより9年、 5ヶ月前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #207
    saito
    参加者

    斎藤と申します。
    昨日まで正常に出力できていたのですが、本日より日付項目の
    西暦部分が「4003年3月25日」のように出力されるようになってしまいました。
    (本来は「2015年3月25日」という日付)

    どうやら「2015年」というのが「平成2015年」と解釈されているようで
    それが西暦に変換されて「4003年」になっているようです。

    iReport上の日付項目のExpressionには

    new SimpleDateFormat(“yyyy-MM-dd”).parse($F{日付})

    のように設定しています。

    ReportsConnectサーバーの環境が急に何か変わったのか、それとも
    そもそも上記の書き方では不足があるのかご教授いただければと思います。

    #208
    sweetie
    参加者

    先ほど確認したところ、

    Text Field Expressionで new java.util.Date() と指定して、
    Patternで yyyy年 MM月 dd日 と指定したフィールドで
    正しく、2015年03月25日 と表示されています。

    Patternで何を指定しているか、また、$F{日付}をそのまま出力した場合何が表示されるかを確認してみてください。

    #209
    saito
    参加者

    ありがとうございます。

    Text Field Expressionには

    new SimpleDateFormat(“yyyy-MM-dd”).parse($F{日付})

    と指定しており、Patternには

    yyyy年 MM月 dd日

    と設定しています。また、

    $F{日付}

    にはkintoneの日付フィールドで取得される「2015-03-25」のような
    形式の文字列が入ってきています。

    java.util.Date()では「2015-03-25」という形式の日付を正しく
    認識できなかったので SimpleDateFormat を使用していました。

    逆に、new java.util.Date()を使って「2015-03-25」という形式のものを
    扱う際、Text Field Expressionにはどのように記述されているのか
    アドバイスをいただいてもよろしいでしょうか?
    (純粋なJavaの話かもしれませんが。。)

    #210
    saito
    参加者

    特に何もいじっていないのですが、今ReportsConnectでPDFを生成してみたら、
    正しい西暦表示になっていました。。

    朝見た時は「平成2015年」が西暦変換された「4003年」という出力だったのですが。。

    #216
    ino
    参加者

    西暦がうまく変換されない場合や曜日が変換されない場合、SimpleDateFormatの第二引数に「Locale.US」を書いてください。

    サンプルコードを書いておきます。

    (パターンで出力フォーマットを指定してください)
    new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSSZ”,Locale.US).parse($F{日時}.substring(0,19)+”.000+0000″)

    (パターンが使えないので1行目で出力フォーマットを設定してください)
    new SimpleDateFormat(“yyyy/MM/dd HH:mmEEEEE”,Locale.JAPAN)
    .format(
    new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSSZ”,Locale.US).parse($F{日時}.substring(0,19)+”.000+0000″)
    )

    #219
    saito
    参加者

    inoさま
    アドバイスいただきありがとうございました。

    実は3月の投稿の後、Locale.USを明示的に指定すると良さそうということがわかりましたので、

    new SimpleDateFormat(“yyyy-MM-dd”, Locale.US).parse($F{日付})

    のように実装を行い、その後特に問題には遭遇しておりません。

    時間が経過してからのアドバイス投稿、ありがとうございました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。