Я храню дату как строку где-то в своем приложении. как это:
Date updatedDate = new Date();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(_context);
SharedPreferences.Editor editor = settings.edit();
editor.putString(Constants.Preferences.LastUpdateDateKey, updatedDate.toLocaleString());
editor.commit();
Все работает нормально, когда язык является английским.
Но когда я переключу его на французский.
этот код выдает незаконное свойствоArgumentException
String lastUpdateDateString = settings.getString(Constants.Preferences.LastUpdateDateKey, null);
if(lastUpdateDateString!=null){
lastUpdateDate = new Date(Date.parse(lastUpdateDateString));
}
он бросает Date.parse
Как английский, так и французский, updatedDate.toLocaleString() в этом формате: 2011-12-16 22:13:32
Это должно иметь какое-то отношение к языковому коммутатору. Есть ли способ сказать синтаксический анализ даты с использованием формата?
Вы можете использовать SimpleDateFormat
это даст вам дату, и она будет исправлена для каждого языкового стандарта
Синтаксис - это SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
если вы хотите получить строку, вы можете использовать
dateFormat.format(new Date())
и если вы хотите получить Date from String, тогда
Date date = dateFormat.parse(strDate)
Я нашел ответ, используя SimpleFormatter.