#java
#java
Вопрос:
Как можно изменить этот формат даты «2011-09-07T00:00:00 02:00» на «dd.MM . «то есть «07.09».
Заранее спасибо!
Комментарии:
1. Вы искали «Как отформатировать дату в Java?» в Интернете или даже на этом сайте? Я так не думаю..
Ответ №1:
вот пример
отредактировал код:
public static void main(String[] args) throws ParseException {
String input = "2011-09-07T00:00:00 02:00";
SimpleDateFormat inputDf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat outputDf = new SimpleDateFormat("dd.MM");
Date date = inputDf.parse(input.substring(0,9));
System.out.println(date);
System.out.println(outputDf.format(date));
}
Комментарии:
1. Я буду получать вышеупомянутый формат даты в качестве входных данных из XML-файла, и мне нужно преобразовать его в «dd.MM »
2. @neha проверьте новый код на соответствие вашим требованиям. Если вы этого не понимаете, попробуйте отладить код в eclipse. Вы должны быть в состоянии понять это
Ответ №2:
В основном —
-
Создайте объект формата даты из приведенной выше строки
-
Проанализируйте объект date и переформатируйте, как вам удобнее.
Например (я не тестировал это):
/*
* REFERENCE:
* http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/
*/
import java.text.DateFormat;
import java.util.Date;
public class DateFormatExample1 {
public static void main(String[] args) {
// Make a new Date object. It will be initialized to the current time.
DateFormat dfm = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
Date d = dfm.parse("2011-09-07 00:00:00");
// See what toString() returns
System.out.println(" 1. " d.toString());
// Next, try the default DateFormat
System.out.println(" 2. " DateFormat.getInstance().format(d));
// And the default time and date-time DateFormats
System.out.println(" 3. " DateFormat.getTimeInstance().format(d));
System.out.println(" 4. "
DateFormat.getDateTimeInstance().format(d));
// Next, try the short, medium and long variants of the
// default time format
System.out.println(" 5. "
DateFormat.getTimeInstance(DateFormat.SHORT).format(d));
System.out.println(" 6. "
DateFormat.getTimeInstance(DateFormat.MEDIUM).format(d));
System.out.println(" 7. "
DateFormat.getTimeInstance(DateFormat.LONG).format(d));
// For the default date-time format, the length of both the
// date and time elements can be specified. Here are some examples:
System.out.println(" 8. " DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT).format(d));
System.out.println(" 9. " DateFormat.getDateTimeInstance(
DateFormat.MEDIUM, DateFormat.SHORT).format(d));
System.out.println("10. " DateFormat.getDateTimeInstance(
DateFormat.LONG, DateFormat.LONG).format(d));
}
}
Комментарии:
1. Ваша первая строка формата неверна — месяцы — это ММ, а не мм.
2. … и вам не хватает ‘T’ и сегмента часового пояса даты / метки времени.
3. Я буду получать вышеупомянутый формат даты в качестве входных данных из XML-файла, и мне нужно преобразовать его в «dd.MM »
Ответ №3:
Ваш код нуждается в небольшой коррекции в следующей строке
Date date = inputDf.parse(input.substring(0,9));
Вместо (0,9)
вам нужно ввести (0,10)
, и вы получите желаемый результат.
Ответ №4:
tl; dr
OffsetDateTime.parse( "2011-09-07T00:00:00 02:00" ).format( DateTimeFormatter.ofPattern( "dd.MM" )
java.time
В вопросе и других ответах используются старые устаревшие классы, которые оказались сложными и запутанными. Они были вытеснены классами java.time .
Ваша входная строка находится в стандартном формате ISO 8601. Эти форматы используются по умолчанию в классах java.time. Поэтому нет необходимости указывать шаблон форматирования.
OffsetDateTime odt = OffsetDateTime.parse( "2011-09-07T00:00:00 02:00" );
Вы можете сгенерировать строку в желаемом формате.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd.MM" );
String output = odt.format( f );
MonthDay
Вам нужны месяц и день месяца. На самом деле для этого есть класс, MonthDay
.
MonthDay md = MonthDay.from( odt );
Вы можете сгенерировать строку в желаемом формате.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd.MM" );
String output = md.format( f );