【发布时间】:2012-02-10 22:52:00
【问题描述】:
有人知道如何在使用格式化日期时获取系统使用的格式字符串
DateFormat.getLongDateFormat(Context context).format(Date date)
【问题讨论】:
-
请选择另一个答案作为接受的答案。当前一个是 hack(正如回答的人所指出的那样)。
标签: android
有人知道如何在使用格式化日期时获取系统使用的格式字符串
DateFormat.getLongDateFormat(Context context).format(Date date)
【问题讨论】:
标签: android
要获取日期格式模式,您可以这样做:
Format dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
String pattern = ((SimpleDateFormat) dateFormat).toLocalizedPattern();
【讨论】:
我写了一个方法来检测这个格式字符串。 (为我的情况工作)。
public static String getDateFormat(Context context){
// 25/12/2013
Calendar testDate = Calendar.getInstance();
testDate.set(Calendar.YEAR, 2013);
testDate.set(Calendar.MONTH, Calendar.DECEMBER);
testDate.set(Calendar.DAY_OF_MONTH, 25);
Format format = android.text.format.DateFormat.getDateFormat(context);
String testDateFormat = format.format(testDate.getTime());
String[] parts = testDateFormat.split("/");
StringBuilder sb = new StringBuilder();
for(String s : parts){
if(s.equals("25")){
sb.append("dd/");
}
if(s.equals("12")){
sb.append("MM/");
}
if(s.equals("2013")){
sb.append("yyyy/");
}
}
return sb.toString().substring(0, sb.toString().length()-1);
}
编辑请查看以下 Mark Melling 的回答 https://stackoverflow.com/a/18982842/945808 以获得更好的解决方案。我的只是很久以前的黑客攻击。
【讨论】:
/ 分割日期的区域设置,. 或- 用于该区域设置
API 中有一个静态方法,您可以这样调用:
Format dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
还有更多关于它的讨论here。
【讨论】:
你可以用这个:
private static DateFormat mDateFormat;
private static DateFormat mTimeFormat;
mDateFormat = android.text.format.DateFormat.getDateFormat(this);
mTimeFormat = android.text.format.DateFormat.getTimeFormat(this);
public static String getSystemDateFormat() {
return ((SimpleDateFormat) mDateFormat).toPattern();
}
public static String getSystemTimeFormat() {
return ((SimpleDateFormat) mTimeFormat).toPattern();
}
public static String getSystemDateTimeFormat() {
return getSystemDateFormat() + " " + getSystemTimeFormat();
}
【讨论】:
根据上面的答案:
String pattern = Settings.System.getString(getActivity().getContentResolver(),
Settings.System.DATE_FORMAT);
String format;
if (pattern.indexOf("d")<pattern.indexOf("M"))
format = "d/M";
else
format = "M/d";
SimpleDateFormat df = new SimpleDateFormat(format);
然后使用 SimpleDateFormat 格式化您的 Date 对象。它对我有用。
【讨论】:
我使用 SimpleDateFormat 没有自定义模式从系统中获取首选格式的实际日期和时间:
public static String getFormattedDate() {
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat(); //called without pattern
return df.format(c.getTime());
}
返回:
【讨论】:
根据DateFormat 文档:
要格式化当前区域设置的日期,请使用静态工厂之一 方法:
myString = DateFormat.getDateInstance().format(myDate);
并将其格式化为不同的语言环境:
myString = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE).format(myDate);
【讨论】:
String shortDateFormat = Settings.System.getString(context.getContentResolver(), Settings.System.DATE_FORMAT);
【讨论】: