Отображение даты в двузначном формате
У меня возникли проблемы с отображением даты в двузначном формате. Я хочу, чтобы это было так, что когда день или месяц - это пример с одной цифрой: 4 Он будет показывать 04. У меня возникают проблемы с логикой для него, если кто-то может мне помочь, я был бы очень благодарен.
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
if (month % 10 == 0) {
Place = 0 + month;
}
String Dates = year + "-" + Place + "-" + day;
Date.setText((Dates));
Ответы
Ответ 1
DecimalFormat mFormat= new DecimalFormat("00");
mFormat.format(Double.valueOf(year));
в вашем случае:
mFormat.setRoundingMode(RoundingMode.DOWN);
String Dates = mFormat.format(Double.valueOf(year)) + "-" + mFormat.format(Double.valueOf(Place)) + "-" + mFormat.format(Double.valueOf(day));
Ответ 2
Пожалуйста, используйте SimpleDateFormat
SimpleDateFormat sd1 = new SimpleDateFormat("dd-MMM-yyyy");
System.out.println("Date : " + sd1.format(new Date(c.getTimeInMillis()));
Выход
Date : 18-Apr-2012
Ответ 3
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH)+1;
String Dates = year + "-" +(month<10?("0"+month):(month)) + "-" + day;
Date.setText((Dates));
Ответ 4
if (dayOfMonth < 10) {
NumberFormat f = new DecimalFormat("00");
Sting date = String.valueOf(f.format(dayOfMonth));
}
Ответ 5
Используйте SimpleDateFormat класс.. Есть много способов сделать это.
что-то вроде этого..
SimpleDateFormat sdfSource = new SimpleDateFormat("dd/MM/yy"); // you can add any format..
Date date = sdfSource.parse(strDate);
Ответ 6
TL;DR
LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString()
2016-01-07
Избегать старых классов времени
Класс java.util.Calendar, который вы используете, теперь является устаревшим. Избегайте этого класса вместе с java.util.Date и т.д. Они оказались плохо спроектированными, запутанными и неприятными.
java.time
Предыдущие классы времени были вытеснены java.time framework, встроенным в Java 8 и более поздние версии. Большая часть функциональных возможностей была перенесена на Java 6 и 7 в проект ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP.
Эти современные классы могут выполнить вашу цель в одной строке кода, как показано ниже.
Функции форматирования даты и времени
Как устаревшие классы времени, так и классы java.time предлагают функции форматирования. Вам не нужно писать свой собственный код форматирования.
Часовой пояс
Часовой пояс имеет решающее значение для определения даты. Дата меняется во всем мире по часовому поясу, так как новый день наступает раньше на востоке. Эта проблема была проигнорирована в Вопросе и других ответах. Если этот параметр опущен, неявно применяется текущий часовой пояс JVMs по умолчанию. Лучше явно указать желаемый/ожидаемый часовой пояс.
LocalDate
Для значения даты только без времени и без часового пояса используйте LocalDate
. Хотя часовой пояс не сохраняется в LocalDate
, часовой пояс определяет "сегодня".
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
ISO 8601
Ваш желаемый формат YYYY-MM-DD с двойными цифрами соответствует стандарту ISO 8601, определяющему разумные форматы для текстовых представлений даты и времени. Этот стандарт используется по умолчанию в классах java.time для синтаксического анализа/генерации строк.
String output = today.toString();
Все, 3 строки кода. Вы даже можете их комбинировать.
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();
Ответ 7
if ((month+1)<10){
place = "0"+(String) (month+1)
}
делать то же самое в течение дня, и вам хорошо идти.
+1 в месяц, потому что он начинается с 0.
Ответ 8
Вы можете использовать класс SimpleDateFormat
String dates = new java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date())
для получения дополнительной информации
https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
Ответ 9
Joda времени
Используя библиотеку Joda-Time, в частности org.joda.time.DateTime
.
DateTime datetime = new DateTime(new Date());
String month = datetime.toString("MM");
результат будет 2 цифры
Если вам требуется, например, год, вы можете использовать:
String year = datetime.toString("YYYY");
результат будет 4 цифры года.
Ответ 10
вы можете использовать метод String.format().
пример:
String.format("%02d", month);
чтобы они добавили "0" перед месяцем, если выбранный месяц меньше 10.