2013-08-23 3 views
0

Я получения счета-фактуры с датой (TaxPointDate), который находится в формате «2012-10-31T00: 00: 00 + 01: 00»Повторное форматирование даты/времени при преобразовании значения

Однако Мне нужно заменить часть «+01: 00» на «+00: 00», поскольку у меня возникли трудности, когда значение изменилось с «2012-10-31T00: 00: 00 + 01: 00» в оригинале на « 2012-10-30T23: 00: 00.000Z ", когда я переформатирую, что не то, что я хочу.

Как бы я это сделал?

Благодаря

+0

Что представляет собой класс объекта? 'Java.util.Date'? – KidTempo

+1

Что вы имеете в виду: _replace «+01: 00» до «+00: 00» _? «+01: 00» означает смещение временной зоны. Обе даты, о которых вы упомянули, представляют собой один и тот же момент времени. –

+0

Да java.util.Date – Safi

ответ

0

Это заменит "+01: 00" часть в "+00: 00"

String s = "2012-10-31T00:00:00+01:00".replaceAll("\\+.*", "+00:00") 
1

Mayby это будет работать для вас. Но я думаю, вы не будете использовать это в своем приложении. Проблема в том, что я меняю DefaultTimeZone, поэтому вывод каждой даты будет как «GMT». Я также добавляю смещение между TimeZones, поэтому ваш выход - ваше исходное время с +0000 в конце.

Но имейте ввиду, что это изменит вашу дату. Он добавляет timeoffset к часам и вашей исходной дате, и ваша новая дата не равна.

"2012-10-31T00: 00: 00 + 01: 00" и "2012-10-30T23: 00: 00 + 00: 00" равные даты. Выход зависит от разных часовых поясов.

SimpleDateFormat originalDateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
    Date date = originalDateParser.parse("2012-10-31T00:00:00+0100"); 
    System.out.println("Date Input" + originalDateParser.format(date)); 

    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    TimeZone timeZoneInputDate = cal.getTimeZone(); 

    TimeZone.setDefault(TimeZone.getTimeZone("GMT")); 

    System.out.println("TimeZone InputDate: " + timeZoneInputDate.getDisplayName()); 
    cal.add(Calendar.MILLISECOND, (int) timeZoneInputDate.getOffset(date.getTime())); 

    SimpleDateFormat newDateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
    System.out.println(newDateParser.format(cal.getTime())); 

    TimeZone.setDefault(null); 
Смежные вопросы