2017-01-04 7 views
0
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'SSSX"); 
    df.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println("Current date and time in GMT: " + df.format("2017-01-04")); 

это мой код, когда я пытаюсь преобразовать дату в GMT, то я получаю ошибкукак преобразовать дату в GMT в Java

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date at java.text.DateFormat.format(DateFormat.java:310) at java.text.Format.format(Format.java:157) at Sample.main(Sample.java:24)

Пожалуйста, предложите мне, где я делаю неправильно

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'SSSX"); 
    df.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println("Current date and time in GMT: " + df.format(new Date())); 

Этот код работает отлично, но мне нужно для любой даты, пожалуйста, помогите мне

но ВГ ан я попробовать этот код

try 
{ 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'SSSX"); 
    df.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println("Current date and time in GMT: " + df.parse("2017-01-04")); 
} 
    catch(Exception e) 
{ 
    e.printStackTrace(); 
} 

я получаю дату не поддается синтаксическому анализу: «2017-01-04», пожалуйста, скажите мне, как это исправить

+0

Что такое полный прецедент? Вы предпочитаете конвертировать время сервера/хоста в GMT? Или создание конвертера, который преобразует часовые пояса? или что еще? Метод df.format принимает объект Date, а не String. –

+0

Для вашего последнего редактирования - измените первую строку на DateFormat df = new SimpleDateFormat ("yyyy-MM-dd"); и вы должны иметь возможность разобрать –

+0

, пожалуйста, проверьте мой запрос. Мне нужна дата, например, 2017-01-04T101Z в формате GMT ​​ –

ответ

2

Если у вас есть объект даты, то вы можете отформатировать его, как вы хотите :

DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
format.setTimeZone(TimeZone.getTimeZone("GMT")); 

//create a calendar representing your date. 
Calendar cal = Calendar.getInstance(); 
cal.set(2017, 01, 04); 

//format the date object to the pattern you want. 
String DateToStr = format.format(cal.getTime()); 

System.out.println(DateToStr); 

Если у вас есть дата в виде строки вы также можете сделать:

String string = "2017-01-04"; 
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); 
format1.setTimeZone(TimeZone.getTimeZone("GMT")); 
Date date = null; 
try { 
    date = format1.parse(string); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 
System.out.println(date); 
+0

моя дата в String @paner –

+1

Просто укажите часовой пояс в SDF, и ваш ответ выглядит хорошо. –

+0

Ср Янв 04 00:00:00 IST 2017 его приход в IST, когда мне нужно 2017-01-04T101Z вот так –

1

Попробуйте ..

String s = "2016-11-21 13:30:0.0"; 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss); 
     Date d = null; 
     try 
     { 
      d = format.parse(s); 
     } catch (ParseException e) 
     { 
      e.printStackTrace(); 
     } 

     SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd'T'SSSX"); 

     gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

     System.out.println(gmtFormat.format(d)); 
+0

2016-11-21 13: 30: 00.0 моя дата идет следующим образом. i я использую код ур, тогда я получаю 2017-01-03T18: 30: 00Z, который я неправильно –

+0

, пожалуйста, предложите мне –

0

Этот код поможет вам лучше понять - вы можете попробовать раскомментировать прокомментированные строки и сравнить результаты. Представляем интерес для вас во всем этом блоке: gdf.parse(gmtFormat)

Date date = new Date(); 
    DateFormat idf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
    idf.setTimeZone(TimeZone.getTimeZone("IST")); 
    DateFormat gdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
    gdf.setTimeZone(TimeZone.getTimeZone("GMT")); 

    //String istFormat = idf.format(date); 
    //System.out.println("IST: "+istFormat); 

    String gmtFormat = gdf.format(date); 
    System.out.println("GMT: "+ gmtFormat); 
    try { 
     //System.out.println("gmt parsed from istFormat: "+gdf.parse(istFormat)); 
     //System.out.println("ist parsed from istFormat: "+idf.parse(istFormat)); 

     System.out.println("gmt parsed from gmtFormat: "+gdf.parse(gmtFormat)); 
     System.out.println("ist parsed from gmtFormat: "+idf.parse(gmtFormat)); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы