Android에서 서버와 통신하는 앱을 만들고 있습니다. 해당 서버는 다음과 같은 ISO 8601 날짜 문자열을 반환합니다 .
2014-11-21 12:24:56.662061-02
그런 다음 Java의 SimpleDateFormatter를 사용하여 다음과 같이 문자열을 구문 분석하려고합니다.
Locale l = new Locale("pt","BR");
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSZZ",l).parse(str_date);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date.getTime());
문제는이 솔루션이 부분적으로 작동한다는 것입니다. 년, 월, 일,시를 정확하게 알 수 있지만 시간, 분, 초로 내려 가면 항상 분을 잘못 인식합니다. 예제 문자열을 사용하여 인쇄하려고하면 "12:24"대신 "12:35"와 같은 내용이 표시됩니다. 로케일을 사용하지 않고 로케일을 사용하여 다른 마스크를 시도했지만 아무것도 작동하지 않는 것 같습니다.
이 링크 에서 SimpleDateFormatter가 ISO 8601을 잘 지원하지 않으며 그 사람이 javax.xml.bind.DatatypeConverter.parseDateTime () 메서드를 사용하여 솔루션을 제공했지만 DatatypeConverter는 Android SDK에 없습니다. 그래서 ...이 문자열을 올바르게 구문 분석하려면 어떻게해야합니까?
S
밀리 초입니다. 662061은 662 초 = 11 분입니다.
어떻게 든 마이크로 초를 버리고 SSS를 사용하십시오.
str_date = str_date.replaceFirst("(\\d\\d[\\.,]\\d{3})\\d+", "$1");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다