Вам нужно три X
, чтобы выйти из набора, например
Sign TwoDigitHours : Minutes
. Я предлагаю использовать OffsetDateTime
, если вы работаете с java8 или выше:
String input = "2017-08-01T15:43:45+0530";
DateTimeFormatter parser = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
OffsetDateTime offsetDateTime = OffsetDateTime.parse(input, parser);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
System.out.println(offsetDateTime.format(formatter)); // 2017-08-01T15:43:45+05:30
Поскольку 2017-08-01T15:43:45+05:30
равно ISO_OFFSET_DATE_TIME
, вы также можете просто использовать:
String outPut = offsetDateTime.toString();
Обновление:
Если вы хотите использовать SimpleDateFormat
попробуйте:
String input = "2017-08-01T15:43:45+0530";
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date date = parser.parse(input);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
System.out.println(formatter.format(date));
Но это работает только тогда, когда смещение вашей системы равно 0530
, поскольку Date
не содержит информацию о часовом поясе.