ユーザーロケールに基づいて生年月日を表示したい。私のアプリケーションでは、フィールドの 1 つに生年月日があり、現在の形式はdd/mm/yyyy
. したがって、ユーザーがロケールを変更すると、それに応じて日付形式も変更されます。ポインターやコード サンプルは、問題を解決するのに本当に役立ちます。
69792 次
8 に答える
96
ユーザー ロケールに従って日付をフォーマットするDateFormatクラスを使用できます。
例:
String dateOfBirth = "26/02/1974";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = sdf.parse(dateOfBirth);
} catch (ParseException e) {
// handle exception here !
}
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context);
String s = dateFormat.format(date);
getLongDateFormat
必要な冗長性のレベルにgetMediumDateFormat
応じて、さまざまな方法を使用できます。
于 2012-06-19T02:21:44.890 に答える
14
ロケールに応じて日付形式を変更するには、次のコードが役に立ちました。
String dateOfBirth = "26/02/1974";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = sdf.parse(dateOfBirth);
} catch (ParseException e) {
// handle exception here !
}
String myString = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
次に、ロケールを変更すると、それに基づいて日付形式が変更されます。日付パターンの詳細: http://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html
于 2015-03-17T18:53:41.880 に答える
12
Android API は、ローカライズされた日付形式を表示する簡単な方法を提供します。次のコードは機能します。
public class FileDateUtil {
public static String getModifiedDate(long modified) {
return getModifiedDate(Locale.getDefault(), modified);
}
public static String getModifiedDate(Locale locale, long modified) {
SimpleDateFormat dateFormat = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
dateFormat = new SimpleDateFormat(getDateFormat(locale));
} else {
dateFormat = new SimpleDateFormat("MMM/dd/yyyy hh:mm:ss aa");
}
return dateFormat.format(new Date(modified));
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public static String getDateFormat(Locale locale) {
return DateFormat.getBestDateTimePattern(locale, "MM/dd/yyyy hh:mm:ss aa");
}
}
次のコードを確認できます。
String koreaData = FileDateUtil.getModifiedDate(Locale.KOREA, System.currentTimeMillis());
String franceData = FileDateUtil.getModifiedDate(Locale.FRENCH, System.currentTimeMillis());
String defaultData = FileDateUtil.getModifiedDate(Locale.getDefault(), System.currentTimeMillis());
String result = "Korea : " + koreaData + System.getProperty("line.separator");
result += "France : " + franceData + System.getProperty("line.separator");
result += "Default : " + defaultData + System.getProperty("line.separator");
tv.setText(result);
于 2016-06-25T04:29:12.363 に答える