현재까지 그루비 노드
나는 Groovy로 코딩하고있다
나는 현재 너무 지루한 일을하지 않고 가지고 가지고있는 날짜를 변환하려고 노력하고 있습니다.
String theDate = "28/09/2010 16:02:43";
def newdate = new Date().parse("d/M/yyyy H:m:s", theDate)
다수 :
Tue Aug 10 16:02:43 PST 2010
위의 코드는 잘 작동하지만 이동이 다음과 같이 변경 될 때 :
String testDate = "Tue Aug 10 16:02:43 PST 2010"
def newerdate = new Date().parse("d/M/yyyy H:m:s", testDate)
"화에는 그런 가치가 없다"는 말이 있습니다. 구문 분석에 'E'를 던지려고했지만 날짜를 구문 분석했습니다.
누군가 내가 두 번째 예제를 구문 분석하는 방법을 설명 할 수 있습니까?
parse ()에 대한 첫 번째 인수는 예상 형식입니다. Date.parse("E MMM dd H:m:s z yyyy", testDate)
작동 작업으로 변경해야합니다 . (새 데이트를 만들 필요가 얼마나 많은 메서드입니다)
어떤 형식인지 미리 모르는 경우이를위한 특수 파싱 라이브러리를 찾아야합니다. Ruby에는 Chronic 이라는이라는 라이브러리가 제공 될 Groovy에 해당 하는 라이브러리를 알지 못합니다. 편집 : jChronic 이라는 라이브러리의 Java 포트가 있습니다. 확인하고 싶을 수도 있습니다.
이 시도 :
def date = Date.parse("E MMM dd H:m:s z yyyy", dateStr)
JChronic이 최선의 선택입니다. 다음 .fromString()
은 던질 수있는 거의 모든 것을 구문 분석 하는 메서드를 Date 클래스에 추가하는 예제입니다 .
Date.metaClass.'static'.fromString = { str ->
com.mdimension.jchronic.Chronic.parse(str).beginCalendar.time
}
다음과 같이 부를 수 있습니다.
println Date.fromString("Tue Aug 10 16:02:43 PST 2010")
println Date.fromString("july 1, 2012")
println Date.fromString("next tuesday")
a String
를으로 "캐스트"하는 Groovy 방법을 검색하면서 Date
다음 기사를 보았습니다 . http://www.goodercode.com/wp/intercept-method-calls-groovy-type-conversion/
작성자는 Groovy metaMethods를 사용하여 모든 클래스의 asType
메서드 동작을 동적으로 확장 할 수 있습니다. 다음은 웹 사이트의 코드입니다.
class Convert {
private from
private to
private Convert(clazz) { from = clazz }
static def from(clazz) {
new Convert(clazz)
}
def to(clazz) {
to = clazz
return this
}
def using(closure) {
def originalAsType = from.metaClass.getMetaMethod('asType', [] as Class[])
from.metaClass.asType = { Class clazz ->
if( clazz == to ) {
closure.setProperty('value', delegate)
closure(delegate)
} else {
originalAsType.doMethodInvoke(delegate, clazz)
}
}
}
}
Convert
Groovy 변환을 래핑 하는 클래스를 제공 하는 as
모든 유형에서 다른 유형으로 사용자 정의 기반 유형 을 추가하는 것이 간단합니다 .
Convert.from( String ).to( Date ).using { new java.text.SimpleDateFormat('MM-dd-yyyy').parse(value) }
def christmas = '12-25-2010' as Date
편리하고 강력한 솔루션이지만 메타 클래스를 다루는 데 따른 장단점과 함정 익숙하지 않은 사람에게는 권장하지 않습니다.
Date#parse
더 이상 사용되지 않습니다. 대안은 다음과 가변합니다.
java.text.DateFormat#parse
따라서 :
new SimpleDateFormat("E MMM dd H:m:s z yyyy", Locale.ARABIC).parse(testDate)
SimpleDateFormat은 DateFormat의 구현입니다.
이 경우 가장 쉬운 방법 은 Groovy JDK 개선 사항 중 하나 인 parseToStringDate 를 사용 하는 것입니다.
미국 로케일 상수 만 포함하는 EEE MMM dd HH : mm : ss zzz yyyy 패턴과 일치하는 문자열을 구문 분석합니다 (예 : 토요일은 토요일). 이러한 문자열은 Date의 toString 메소드에 의해 생성됩니다.
예:
println (Date.parseToStringDate("Tue Aug 10 16:02:43 PST 2010").format('MM-dd-yyyy'))
도움이 되었기를 바랍니다.
다음은 개발중인 응용 프로그램 내에서 진행되는 방식입니다.
import java.text.SimpleDateFormat
String newDateAdded = "2018-11-11T09:30:31"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
Date dateAdded = dateFormat.parse(newDateAdded)
println(dateAdded)
출력은 다음과 같습니다.
Sun Nov 11 09:30:31 GMT 2018
귀하의 예에서는 귀하의 필요를 충족시키기 위해 약간 조정할 수 있습니다. 내가 당신이라면 할 것입니다 :
String datePattern = "d/M/yyyy H:m:s"
String theDate = "28/09/2010 16:02:43"
SimpleDateFormat df = new SimpleDateFormat(datePattern)
println df.parse(theDate)
이것이 당신에게 많은 도움이되기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/3817862/groovy-string-to-date
'ProgramingTip' 카테고리의 다른 글
Visual Studio 2010의 전역 소스 코드 제어 무시 패턴에는 무엇이 포함되어야합니까? (0) | 2020.11.14 |
---|---|
enumerate () -Python에서 생성기 생성 (0) | 2020.11.14 |
Python : N 번 목록에 항목 추가 (0) | 2020.11.14 |
SNI는 실제로 브라우저에서 지원합니까? (0) | 2020.11.14 |
HttpServletRequest- 쿼리 인용 데이터 변수 가져 오기, 양식 없음 (0) | 2020.11.14 |