2014-11-28 2 views
0

두 개의 문자열이 있습니다. 첫 번째 것은 다음과 같습니다.스칼라에서 문자열에서 날짜를 추출하는 방법

{"userId":"554555454-45454-54545","start":"20141114T172252.466z","end":"20141228T172252.466z","accounts":[{"date":"20141117T172252.466z","tel":"0049999999999","dec":"a dec","user":"auser"},{"date":"20141118T172252.466z","tel":"004888888888","dec":"another dec","user":"anotheruser"}]} 

두 번째 것은 동일한 날짜이지만 다른 형식입니다. 22 : 52

내가 날짜를 추출하기 위해 노력하고있어 대신

20141117T172252.466z

의 그것은

2014-11-14,17 보여줍니다 첫 번째 String의 두 번째 String의 날짜와 동일한 어설 션. 정규 표현식으로 시도했지만 오류가 발생했습니다. 불법 반복입니다. 어떻게해야합니까?

답변

1

당신은 자바에서 SimpleDateFormat에 사용할 수 있습니다 :

import java.text.SimpleDateFormat 
import java.util.Date 
val s1 = "{\"userId\":\"554555454-45454-54545\",\"start\":\"20141114T172252.466z\"}" 
val s2 = "{\"userId\":\"554555454-45454-54545\",\"start\":\"2014-11-14,17:22:52\"}" 
val i1 = s1.indexOf("start") 
val i2 = s2.indexOf("start") 
val str1 = s1.replace("T", "_").substring(i1+8, i1+ 23) 
val str2 = s2.substring(i2+8, i2+27) 
val date1: Date = new SimpleDateFormat("yyyyMMdd_hhmmss").parse(str1) 
val date2: Date = new SimpleDateFormat("yyyy-MM-dd,hh:mm:ss").parse(str2) 
val result = date1==date2 
+0

내가 그것을 사용할 수 있지만 내 첫 번째 문제는이 두 문자열의 일자 추출하는 방법을 것을 상상한다. 대단히 감사합니다 rtruszk – jimakos17

+0

정말 좋지만 두 번째 문자열은 첫 번째 문자열과 매우 다릅니다. 날짜 (2014-11-14,17 : 22 : 52)에는 처음과 같은 태그가 없습니다. 내가 11 월 14 일 22:57:01 GMT 2014에서 date1을 2014-11-14,22 : 57 : 01로 변경할 수 있다면 contains를 사용하여 두 번째 String에 존재한다고 주장 할 수 있습니다. 추가 문제는 String에서 한 날짜뿐 아니라 실제로 확인해야하는 6 가지 시작 부분이 있다는 것입니다. 미안, 내가 처음부터 정확하게 설명하지 않았다면. 고맙습니다 대단히 rtruszk – jimakos17

+0

당신의 솔루션으로 나는 Fri Nov 14 22:57:01 GMT 2014를 첫 번째 문자열에서 얻을 수 있습니다. 이 값을 2014-11-14,22 : 57 : 01로 변환하면 두 번째 String에 contains를 사용하여이 날짜가 있다고 주장 할 수 있습니다. 따라서 두 번째 String에서 아무 것도 할 필요가 없습니다. 다음 단계는 모든 날짜에 대해이 작업을 반복하는 것입니다. 여섯 개가 있기 때문입니다. – jimakos17