2016-04-14 11 views
1

私はJodaTimeのDateTimeFormatを使ってREST APIのいくつかの日付を表しています。異なる環境でのJodaTimeの奇妙な動作

私が使用しているフォーマットは

DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss z").withZone(DateTimeZone.forID("EST")); 

だから私は例えば、私の日付のように表現することにしたいです:2016年4月14日午前8時50分31秒EST

問題があることですプロダクションでコードを実行すると、上の例のように日付が表示されますが、ローカルマシンやステージングで実行すると、次のようになります。

04/14/2016 09: 05:53 -05:00

私は両方の環境で全く同じコードを使用しています。また、ステージングとプロダクションの両方がAmazonで実行されており、サーバーの日付も同じように設定されているため、この問題の解決方法はわかりません。

私は私の問題を説明し、再現するために、単純な主に作られています

public static void main(String[] args) { 
     DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss z") 
       .withZone(DateTimeZone.forID("UTC")); 
     System.out.println(new DateTime(new Date()).toString(format)); 
} 

P.S.私はJava 8とJodaTime 2.7を使用しています。

+0

ローカルテストの形式で大文字のZを使用していないことを100%確信していますか?私は与えられた例であなたの出力を複製することはできません。 – dambros

+0

私は100%自信を持っています。私はJodaTime 2.7を使用しています –

+0

あなたにオプションのjodaをアップデートしていますか?私は2.7で試したところ、実際には動作しません。以前は2.9.3で複​​製できませんでした。 – dambros

答えて

0

@dambrosが提案したように、Joda Time 2.9.3にアップグレードすることによって、ついにそれを稼働させました。それが2.7でProductionで動作していたのは変だと思われるが、それは別の日の問題だ。

ありがとうございます!