Android での日付の解析に関する実際の問題に直面しています。JSON 経由で dd/MM/yyyy HH:mm z 形式の日付を受信しています。必要なのは、「ローカライズされた」時間と分を取得してアプリに表示することだけです。私のコードでは、すべてのデバイスですべて正常に動作していますが、Sony XPERIA デバイスを使用している場合、クライアントからアプリでタイミングが表示されないと報告されました。彼らはまた、時間を表示できない XPeria デバイスを持っていると私に言いました。ソニーのオペレーティング システムの Date/simpledateformat/locale/timezone の奇妙な実装に関連していると思います。これが私のコードです。
getDateLocalized("18/06/2012 18:00 CEST","HH:mm");
public static String getDateLocalized(String match_date, String pattern) {
String d = "";
String format = "dd/MM/yyyy HH:mm z";
SimpleDateFormat sdf = getSimpleDateFormat();
try {
Date date = sdf.parse(match_date);
sdf.setTimeZone(TimeZone.getDefault());
sdf.applyLocalizedPattern(pattern);
d = sdf.format(date);
sdf.applyLocalizedPattern(format);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}
private static SimpleDateFormat getSimpleDateFormat() {
String format = "dd/MM/yyyy HH:mm z";
if (simpledateformat == null)
simpledateformat = new SimpleDateFormat(format, Locale.UK);
return simpledateformat;
}
SimpleDateFormat オブジェクトの作成には非常にコストがかかるため、シングルトン パターンを使用して SimpleDateFormat オブジェクトを取得しています。また、同時に多数のタイミングを表示しています。入力日付のLANGUAGEが英語なので、Locale.UKを使用しています。
大きな問題は、それをテストするためのSony Xperiaデバイスがないことです:(
アドバイスありがとう