2017-09-21 26 views
1

안녕하세요, 제발 도와주세요, 나는 많은 질문을했지만 해결책을 얻지 못했습니다. 코드구문 분석 날짜 스페인어 오류

String localDate1="Miércoles, 04 Octubre 2017 12:00 PM"; 
Locale spanishLocale=new Locale("es", "ES"); 
SimpleDateFormat spanishLocale1=new SimpleDateFormat(getString(R.string.jom_events_date_input_format_12_hrs),spanishLocale); 
String dateInSpanish=spanishLocale1.parse(localDate1).toString(); 
Log.v("@@@WWW","in Spanish: "+dateInSpanish); 

오류

java.text.ParseException: Unparseable date: "Miércoles, 04 Octubre 2017 12:00 PM" (at offset 33) 
+0

'의 값이 무엇인지 :

이 그래서 귀하의 의견과 일치하지 않는 경우에 당신이 가지고있는 실제 국제화 데이터 ("PM"를 포함하는) 구문 분석, 나는 같은 실용적인 솔루션 문자열 전처리 추천 getString (R.string.jom_events_date_input_format_12_hrs)' –

+0

EEEE, dd MMMM yyyy hh : mm a, englisn 날짜를 파싱 할 때 완벽하게 작동하지만 –

+0

기본 로케일 또한 "es"입니다. –

답변

2

: 당신은 다행히를 가리키는 오류 메시지가 게시 한

오프셋 (33) (즉, 귀하의 의견에 "PM"의 위치입니다).

문제는 기기 의존적 인 현지화 데이터 (또는 OS에 따라 다름)과 관련이 있습니다 (여기에는 AM/PM의 스페인어 표현에 대한 구체적인 데이터가 나와 있습니다). 이전 버전의 CLDR-unicode 저장소 (많은 Java, C# 또는 Android 배포판의 공통 소스로 업계 표준)에서는 데이터 "AM"과 "PM"이 사용되었지만 최신 버전에서는 "..m."이 사용되었습니다. 또는 "피. m." 스페인어로.

String input = "Miércoles, 04 Octubre 2017 12:00 PM"; 
input = input.replace("PM", "p. m."); 
// now parse your input with Spanish locale and the appropriate pattern 
+0

나를 위해 일했습니다 감사합니다 verymuch –

0

Miércoles

당신이 Octubre 대신 의 변화 에게

String localDate1="Miércoles, 04 Octubre 2017 12:00 PM"; 

이 라인 10 월에서 맞춤법을 확인할 수 있으며, 확인하시기 바랍니다

+0

실제로 서버 생성 날짜이고 google translate는 수요일로 번역됩니다. 10 월 4 일 수요일 2017 12:00 PM –

+0

스페인어로는 월 이름과 요일 이름이 괜찮습니다. 대문자로 표기하지 않고 파서는 대소 문자를 구분하지 않습니다 - 기본적으로 관대합니다). –

-1

당신은 당신의 참고 :이 코드는 변환

이 코드를 사용할 수 있습니다 : --- miércoles, 04 octubre 2017 오전 12시 을 수요일 년 10 월 4 일 인도 표준시 00시 00분 0초 2017

에 그냥 레코드에 대한
import java.io.IOException; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

public class test { 

    public static void main(String[] args) throws IOException, ParseException { 
     //Wednesday, October 4, 2017 
     String dateInString = "4-Oct-2017"; 
     SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
     Date date = formatter.parse(dateInString); 

     SimpleDateFormat formato = new SimpleDateFormat("EEEE, dd MMMM yyyy hh:mm aaaa", new Locale("es", "ES")); 
     String fecha = formato.format(date); 
     System.out.println(fecha); 

     String localDate1 = fecha; 
     Locale spanishLocale = new Locale("es", "ES"); 
     String pattern = "E, dd MMMM yyyy hh:mm aaaa"; 
     SimpleDateFormat spanishLocale1 = new SimpleDateFormat(pattern, spanishLocale); 
     String dateInSpanish = spanishLocale1.parse(localDate1).toString(); 
     System.out.println(dateInSpanish); 
    } 
}