RiT*_*hBo 5 string android locale date android-date
我通过使用格式化来保存日期SimpleDateFormat.
DateFormat dateForm = new SimpleDateFormat("HH mm ss dd MMM ''yy");
String dateOutput = dateForm.format(new Date());
Run Code Online (Sandbox Code Playgroud)
这使用设备的默认语言环境,例如法语或西班牙语.
如何将此字符串(格式化为不同的Locale)转换回Date格式为Locale.ENGLISH?的对象?
目前,当我尝试将字符串转换回日期时,我得到一个不可解析的日期异常.这是由使用不同的区域设置保存日期的事实引起的
这对你有用
SimpleDateFormat sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.ENGLISH);
String dateOutput = sdf.format(new Date());
Run Code Online (Sandbox Code Playgroud)
编辑
我的想法是用Calendar对象分解它并用另一种语言格式化它.试试这个
SimpleDateFormat sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.getDefault());
Calendar cal = Calendar.getInstance();
int day = 0, month = 0, year = 0, hour = 0, minute = 0, sec = 0;
String loc = Locale.getDefault().getDisplayLanguage();
try {
Date testDate = sdf.parse(date);
cal.setTime(testDate);
sec = cal.get(Calendar.SECOND);
minute = cal.get(Calendar.MINUTE);
hour = cal.get(Calendar.HOUR);
day = cal.get(Calendar.DATE);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
} catch (ParseException e) {
if(loc.equals(Locale.ENGLISH.getDisplayLanguage())){
sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.FRENCH);
try {
Date testDate = sdf.parse(date);
cal.setTime(testDate);
sec = cal.get(Calendar.SECOND);
minute = cal.get(Calendar.MINUTE);
hour = cal.get(Calendar.HOUR);
day = cal.get(Calendar.DATE);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
} catch (ParseException ee) {
sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.FRENCH);
try {
Date testDate = sdf.parse(date);
cal.setTime(testDate);
sec = cal.get(Calendar.SECOND);
minute = cal.get(Calendar.MINUTE);
hour = cal.get(Calendar.HOUR);
day = cal.get(Calendar.DATE);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
} catch (ParseException eex) {
}
}
}
else if (loc.equals(Locale.FRENCH.getDisplayLanguage())){
sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.ENGLISH);
try {
Date testDate = sdf.parse(date);
cal.setTime(testDate);
sec = cal.get(Calendar.SECOND);
minute = cal.get(Calendar.MINUTE);
hour = cal.get(Calendar.HOUR);
day = cal.get(Calendar.DATE);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
} catch (ParseException fe) {
}
}
}
cal.set(Calendar.SECOND, sec);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.HOUR, hour);
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
if(loc.equals(Locale.ENGLISH.getDisplayLanguage()))
sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.getDefault());
else if(loc.equals(Locale.FRENCH.getDisplayLanguage()))
sdf = new SimpleDateFormat("HH mm ss dd MMM ''yy", Locale.getDefault());
Date convertedLangDate = cal.getTime();
String newDate = sdf.format(convertedLangDate);
Run Code Online (Sandbox Code Playgroud)
这对我有用,但它不是最优雅的解决方案.为你的代码调整它.
| 归档时间: |
|
| 查看次数: |
6930 次 |
| 最近记录: |