Intereting Posts
Показывать всплывающее меню при нажатии элемента панели действий. Как автоматически проверять поведение в режиме Resume, вызывая onDestroy с помощью Robotium? Как подключить существующий MS Access к SQLite для использования с разработкой приложений Android? Сделать индикатор выполнения внутри кнопки Ориентация камеры на Android Имитация кнопки питания для отображения диалогового окна выключения Как я могу получить @BeforeClass и @AfterClass эквивалент в Junit3? Датчики Google Cardboard VR Голосовая команда для разблокировки экрана Facebook LoginActivity отображается неправильно Создайте окна SD-карты устройства, загружаемые приложением Android. Разблокировать достижение в игровых играх Google беззвучно, без уведомления Как отключить масштабирование шрифтов в RN для Android? Кнопка Fragment Butterknife не работает Msgstr "ошибка: не удается найти символьную переменную xml" при попытке Google Analytics

Как получить месяц и день в андроиде?

Мне нужно получать месяц и день как: 01 января, 02 февраля … и 01 за первый день месяца и т. Д. Я пробовал это:

String dd = c.get(Calendar.YEAR) + "-" + c.get(Calendar.MONTH) + "-" + c.get(Calendar.DAY_OF_MONTH) + " " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get((Calendar.SECOND)); 

Но я получаю что-то вроде этого:

 2011-8-1 12:05:20 

Каково решение этой проблемы? В течение месяца, я думаю, я должен добавить 1, правильно?

Вы слишком усложняете проблему. Если вам нужно только отформатировать дату определенным образом, используйте класс java.text.SimpleDateFormat . См. Документацию здесь: http://developer.android.com/reference/java/text/SimpleDateFormat.html

Если вам действительно нужно получить отдельные части, то вы правильно используете метод Calendar.get . Я предлагаю вам прочитать на java.util.Calendar .

  String month=c.get(Calendar.MONTH)+1+""; if(month.length()<2){ month="0"+month; } 
 Date date = calendar.getTime(); SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); String formattedDate = format.format(date); 
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Log.e("TEST",sdf.format(new Date())); 

ТЛ; др

 ZonedDateTime.now( ZonedId.of( "America/Montreal" ) ).format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ).replace( "T" , " " ) 

Детали

Каково решение этой проблемы? В течение месяца, я думаю, я должен добавить 1, правильно?

Нет, нет, если вы используете лучшие классы. Вы используете неприятные, запутывающие, плохо разработанные классы времени, которые следует избегать. Вместо этого используйте классы java.time.

ZonedDateTime

Получите текущий момент в желаемом / ожидаемом часовом поясе. Получите объект ZonedDateTime .

 ZoneId zoneId = ZonedId.of( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.now( zoneId ); 

Опросите детали, если это то, что вам нужно. Классы java.time подсчитывают месяц разумно, 1-12 – январь-декабрь. Кстати, проверьте удобное перечисление Month .

 int month = zdt.getMonthValue(); int dayOfMonth = zdt.getDayOfMonth(); 

Чтобы получить буквально строку, которую вы показали, пусть класс DateTimeFormatter выполняет эту работу. Предопределенный форматтер DateTimeFormatter.ISO_LOCAL_DATE_TIME доставит вас почти туда. Вы можете заменить T посередине SPACE, чтобы закончить.

 DateTimeFormatter f = DateTimeFormatter.ISO_LOCAL_DATE_TIME ; String output = zdt.format( f ).replace( "T" , " " ); 

java.time

Рамка java.time встроена в Java 8 и более поздних версий . Эти классы вытесняют старые неприятные классы времени, такие как java.util.Date , java.text.SimpleDateFormat и java.text.SimpleDateFormat .

Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time.

Дополнительную информацию можно найти в учебнике Oracle . И поиск Stack Overflow для многих примеров и объяснений.

Большая часть функциональности java.time возвращается на Java 6 и 7 в ThreeTen-Backport и далее адаптирована для Android в ThreeTenABP .

Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time.