3

次のJavaテストは、米国でホストされているビルドサーバーに合格しています。また、米国以外のサーバー、たとえばドイツでも受け渡します。アイルランドで実行されているローカルサーバーで失敗します。次のコードは、失敗したテストを示しています。

org.junit.ComparisonFailure: expected:<[4/6/09 11:30 AM]> but was:<[06/04/09 11:30]>

これらのテストをローカルで合格させるために提供できるシステム設定はありますか?

public void testFormattedDate() {
// Set the default time zone in case this unit test is executed in a different country
TimeZone.setDefault(TimeZone.getTimeZone(DateUtil.DEFAULT_TIMEZONE));
final Date utilDate = new Date();
utilDate.setDate(6);
utilDate.setHours(11);
utilDate.setMinutes(30);
utilDate.setMonth(3);
utilDate.setSeconds(45);
utilDate.setYear(109);

SimpleDateFormat dateFormatter = new SimpleDateFormat();        
final String formattedOutput = dateFormatter.format(utilDate);

Assert.assertEquals("4/6/09 11:30 AM", formattedOutput);
}  
4

2 に答える 2

4

SimpleDateFormatにパターンを提供しようとする必要がありますか?

SimpleDateFormat dateFormatter = new SimpleDateFormat("d/M/yy HH:mm a");

于 2012-07-27T08:21:36.573 に答える
4

時間は正しいですが、SimpleDateFormat()コンストラクターは内部で。を使用してパッケージプライベートコンストラクターを呼び出しますLocale.getDefault()。したがって、独自の形式を提供することも、別のロケールを提供することもできます。これは、カスタム形式、つまりを使用した場合にのみ可能と思われますSimpleDateFormat(String pattern, Locale locale)

問題はSimpleDateFormat()、ロケールに依存するパターンを使用することです。したがって、システムのデフォルトロケールは、米国で取得するものとは異なるパターンになる可能性があります(ドイツ語サーバーは、デフォルトとしてドイツ語ロケールを使用しないと想定しているため、のような日付06.04.09 11:30

于 2012-07-27T08:24:20.620 に答える