Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Интернационализация даты / 12 сообщений из 12, страница 1 из 1
10.11.2015, 16:44
    #39099820
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Пытаюсь получить сабж и никак - перерыл наверное весь гугл по жаве и ответа нет - все предлагают при получении строки с датой явно указывать формат вывода. А как сделать чтобы автоматом дата формировалась в том виде к какому привыкли пользователи локали? Н-р для русских DD MMM YYYY для немцев MMM DD YYYY для америкосов YYYY\MM\DD и т.д.

calendar.getTime() для русской локали выводит:
Tue Nov 10 13:06:00 GMT 2015
...
Рейтинг: 0 / 0
10.11.2015, 16:54
    #39099840
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
скаку сразу, вопросом особо не заморачивался, потому возможно не в курсе про более оптимальные решения
1) есть android.text.format.DateFormat.getBestDateTimePattern() - он только в последних апи есть, не помню с какой. если ограничение не устраивает, можешь покопать его код. Похоже он делает примерно то, что надо, но на сколько хорошо не могу сказать
2) храни формат в локализованных строках
de_DE/dateformats.xml -> <string name="shortDateFormat">dd.MM.yyyy</string>
en_US/dateformats.xml -> <string name="shortDateFormat">MM/dd/yyyy</string>
...
Рейтинг: 0 / 0
10.11.2015, 17:58
    #39099925
Dim666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Микола ПитерскийПытаюсь получить сабж и никак - перерыл наверное весь гугл по жаве и ответа нет - все предлагают при получении строки с датой явно указывать формат вывода. А как сделать чтобы автоматом дата формировалась в том виде к какому привыкли пользователи локали? Н-р для русских DD MMM YYYY для немцев MMM DD YYYY для америкосов YYYY\MM\DD и т.д.

calendar.getTime() для русской локали выводит:
Tue Nov 10 13:06:00 GMT 2015Для даты можно вот так (выдаст "10 нояб. 2015г." или "10.11.2015" по идее):
Код: java
1.
2.
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
String date = dateFormat.format(new Date());
...
Рейтинг: 0 / 0
11.11.2015, 09:36
    #39100253
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
chpashaскаку сразу, вопросом особо не заморачивался, потому возможно не в курсе про более оптимальные решения
1) есть android.text.format.DateFormat.getBestDateTimePattern() - он только в последних апи есть, не помню с какой. если ограничение не устраивает, можешь покопать его код. Похоже он делает примерно то, что надо, но на сколько хорошо не могу сказать
2) храни формат в локализованных строках
de_DE/dateformats.xml -> <string name="shortDateFormat">dd.MM.yyyy</string>
en_US/dateformats.xml -> <string name="shortDateFormat">MM/dd/yyyy</string>


1. Не подходит - у меня более ранние АПИ
2. Думал об этом - но тут тоже пальцем в небо - я не знаю н-р формат даты для новой зеландии.
...
Рейтинг: 0 / 0
11.11.2015, 09:55
    #39100283
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Dim666DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
String date = dateFormat.format(new Date());


Спасибо огромное за подсказку !!! Вот так удалось получить то что хотел:

Код: java
1.
2.
 DateFormat dateFormat1 = DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
 String date1 = dateFormat1.format(new Date());



А можно ли как еще отдельно получить локальные названия дня недели и месяца или их надо для каждого языка переводить?
...
Рейтинг: 0 / 0
11.11.2015, 09:59
    #39100293
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Микола ПитерскийА можно ли как еще отдельно получить локальные названия дня недели и месяца или их надо для каждого языка переводить?
http://developer.android.com/intl/ru/reference/java/text/DateFormatSymbols.html
...
Рейтинг: 0 / 0
11.11.2015, 10:22
    #39100319
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
...
Рейтинг: 0 / 0
11.11.2015, 10:30
    #39100333
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Микола ПитерскийНашел вот здесь: http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/
Я по твоей ссылке не нашел ничего полезного касательно названий.
См. http://developer.android.com/intl/ru/reference/java/text/DateFormatSymbols.html#getWeekdays()
...
Рейтинг: 0 / 0
11.11.2015, 11:31
    #39100403
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
wadmanМикола ПитерскийНашел вот здесь: http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/
Я по твоей ссылке не нашел ничего полезного касательно названий.
См. http://developer.android.com/intl/ru/reference/java/text/DateFormatSymbols.html#getWeekdays()

Ну как же - я вот там выбрал все что мне нужно было:

Код: java
1.
2.
3.
4.
5.
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
DateFormat dateFormatFull = DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm", Locale.getDefault());
SimpleDateFormat dayFormat= new SimpleDateFormat("EEEE", Locale.getDefault());
SimpleDateFormat monthFormat= new SimpleDateFormat("MMMM", Locale.getDefault());
...
Рейтинг: 0 / 0
11.11.2015, 11:33
    #39100405
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Микола ПитерскийНу как же - я вот там выбрал все что мне нужно было:
Где там названия дней недели?
...
Рейтинг: 0 / 0
11.11.2015, 12:46
    #39100547
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
wadmanГде там названия дней недели?

Так вот же:
Код: java
1.
2.
3.
Date date = new Date();
SimpleDateFormat dayFormat= new SimpleDateFormat("EEEE", Locale.getDefault());
String day = dayFormat.format(date);



выводит "среда"

Код: java
1.
SimpleDateFormat dayFormat= new SimpleDateFormat("EEE", Locale.getDefault());



выводит "ср"
...
Рейтинг: 0 / 0
11.11.2015, 13:16
    #39100597
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интернационализация даты
Микола Питерскийвыводит "среда"
Мда... "дня недели" и "текущего дня недели" - как-бы разный смысл.
Мыж тут программисты, а не абы как.

Хотя, да, я увидел нечто свое между строк.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Интернационализация даты / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]