2017-10-03 2 views
-2

이미 언급 한 답변을 살펴 보았지만 현재 직면하고있는 문제를 해결하지 못했습니다.다른 표준 시간대의 문자열을 다른 표준 시간대의 날짜로 변환

2017-10-03T19 : 45 :

나는 같은 GMT의 String이 내가 다른 시간대로 분석 할 필요가 00.000 + 0000

. 문제는 바로 +0000입니다. SimpleDateFormat을 사용하여 구문 분석하려고하면 사용자의 timeZone을 사용하는 대신 서버 시간대를 고려합니다. https://www.jdoodle.com/embed/v0/java/jdk-1.8/92U

코드 :

String dateString = "2017-10-02T19:45:23.000+0000"; 
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+0000"); 
parseFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
try{ 
    Date newDate = parseFormat.parse(dateString); 
    System.out.println(newDate); 
    parseFormat.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta")); 
    String newDateString = parseFormat.format(newDate); 
    //Instead of +0000 it should be +05:30 but it is not so. 
    System.out.println(newDateString); 
} catch(ParseException e){ 
    e.printStackTrace(); 
} 

출력 :

월 10월 2일 그리니치 표준시 19시 45분 23초 2017
2017- 여기

나는 문제의 데모를 만들었습니다 10-03T01 : 15 : 23.000 + 0000

+2

가능한 중복 (https://stackoverflow.com/questions/43518627/how-to-use-offset-time-in-java-simple-date-format) –

+0

'+ 0000'은 UTC를 의미합니다. –

+2

는 그리고 그것은 문제의 코드를 포함하는 것이 좋습니다, 그래서 링크를 사용할 수없는 경우, 질문은 "불완전"이되지 않습니다 https://meta.stackoverflow.com/a/339451/7605325 –

답변

-1

변경은 +0000Z에 :

SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
+0

감사합니다. 문제가 해결되었습니다. 나는 마지막에 Z를 가지고 패턴을 교체했다. –

-1

날짜를 구문 분석하기 전에 IST을 파서의 시간대를 설정하십시오.

import java.util.*; 
import java.text.*; 
public class MyClass{ 

    public static void main(String []args){ 
     System.out.println("Hello World"); 
     String dateString = "2017-10-02T19:45:23.000+0000"; 
     SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
     //parseFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
     try{ 
      parseFormat.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta")); 
      Date newDate = parseFormat.parse(dateString); 
      System.out.println(newDate); 
      String newDateString = parseFormat.format(newDate); 
      //Instead of +0000 it should be +05:30 but it is not so. 
      System.out.println(newDateString); 
     } catch(ParseException e){ 
      e.printStackTrace(); 
     } 
    } 
} 

출력 :

Hello World 
Mon Oct 02 19:45:23 GMT 2017 
2017-10-03T01:15:23.000+0530 
+0

감사합니다. 문제가 해결되었습니다. 나는 마지막에 Z가 있도록 패턴을 대체했습니다. –

1

java.time

다른 답변 제안 교체 Z+0000는 실제적인 해결 방법으로 정확하지만, 지금으로 대체 귀찮은 된 날짜 - 시간 클래스를 사용 java.time 클래스.

String input = "2017-10-03T19:45:00.000+0000".replace("+0000" , "Z") ; 
Instant instant = Instant.parse(input) ; 

자세한 내용은 this Question을 참조하십시오. [자바 간단한 날짜 형식 오프셋 시간을 사용하는 방법]의

+0

감사합니다. 문제가 해결되었습니다. 나는 마지막에 Z가 있도록 패턴을 대체했습니다. –

관련 문제