Я столкнулся с этой странной проблемой при попытке разобрать даты строки, которые я прибил к этому:SimpleDateFormat с именами TimeZone на разных языках
устройство с некоторым для английского языка (эмулятор):
Date.toString()
дает "Ср Фев 18 13:25:22 GMT 2016"
DateFormat newDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
d1 = newDateFormat.parse("Thu Feb 18 13:25:22 GMT 2016"); //works fine
устройства с немецкой локали:
Date.toString()
дает «Чт Фев 18 13:25:22 МЭЗ 2016» (обратите внимание на часовой пояс на немецком языке, в то время как четверг еще четверг)
DateFormat newDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
d1 = newDateFormat.parse("Thu Feb 18 13:25:22 MEZ 2016"); //does not parse
DateFormat newDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.GERMAN);
d1 = newDateFormat.parse("Thu Feb 18 13:25:22 MEZ 2016"); //does not parse
DateFormat newDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
String s = "Thu Feb 18 13:25:22 MEZ 2016";
s.replace("MEZ", "CET");
d1 = newDateFormat.parse(s); //works fine, but doesn't seem very portable
Так что я искал способ, чтобы либо получить SimpleDateFormat игнорировать часовой пояс полностью (это было бы хорошо для моего приложения, единственное, что я пытаюсь сделать здесь, - это разделить время на «последний раз», которое будет дано в часах, если это меньше, чем на один день, но в дни или недели, если это больше, поэтому часовой пояс не имеет значения для этого случая использования),
или для получения SimpleDateFormat
для понимания часовых поясов на языке устройства.
Бонусные баллы за хороший способ сохранить дату не зависящим от языка способом, сохраняя при этом информацию, такую как часовой пояс и время суток в этом часовом поясе. (когда я обновляю свою базу данных в следующий раз)
«Бонусные баллы за хороший способ сохранить дату не зависящим от языка способом, сохраняя при этом информацию, такую как часовой пояс и время суток в этом часовом поясе» iso8601 формат datetime - ваш ответ – Bhargav
В строке 'String s =" Thu Feb 18 13:25:22 MEZ 2016 ";' почему вы заменяете 'MEZ' на' CET', почему вы меняете часовой пояс того времени? Это неверно, поскольку эта отметка времени предназначена для часового пояса MEZ, и вы просто заменяете это на часовой пояс CET – Bhargav
MEZ и CET - это одно и то же, всего на двух разных языках. – fifaltra