문제

표준 라이브러리를 사용하여 HH:MM 형식의 문자열을 Date(또는 기타) 객체로 구문 분석할 수 있는 방법이 있습니까?

나는 "9/17/2008 10:30"과 같은 것을 Date 객체로 구문 분석할 수 있다는 것을 알고 있습니다.

var date:Date = new Date(Date.parse("9/17/2008 10:30");

하지만 저는 10시 30분만 분석하고 싶습니다.다음 코드는 작동하지 않습니다.

var date:Date = new Date(Date.parse("10:30");

사용자 정의 RegEx를 사용하면 이 작업을 상당히 쉽게 수행할 수 있다는 것을 알고 있지만 기존 Flex API를 사용하면 이것이 가능할 것 같습니다.

도움이 되었습니까?

해결책

특정 질문에 답변하려면:아니요, 원하는 작업을 수행하는 라이브러리 기능은 없지만 ISO 형식, 독일어 형식, 스웨덴 형식, 연도가 로마 숫자로 표시된 날짜 등의 날짜를 구문 분석하는 라이브러리 기능은 없습니다.

정규식을 사용하지 않는 이유는 무엇입니까?그것이 바로 그들이 하는 일입니다.

다른 팁

지정한 정확한 형식을 사용해야 하는 경우 직접 구문 분석해야 합니다.

다음은 간단한 예입니다(테스트되지 않음).

var str:String = "9/17/2008 10:30"

var items:Array = str.split(" ");
var dateElements:Array = items[0].split("/");
var timeElements:Array = items[1].split(":");

var n:Date = new Date(dateElements[2],
                        dateElements[0],
                        dateElements[1].
                        timeElements[0],
                        timeElements[1]);

시간이 24시로 표시되지 않으면 AM 또는 PM을 확인할 방법이 없습니다(코드는 AM으로 가정함).

간단하고 무료인 솔루션으로 DateField의 몇 가지 정적 메서드를 사용할 수 있습니다.

  • DateField.stringToDate(valueString:String, inputFormat:String):날짜
  • DateField.dateToString(값:날짜, 출력Fattern:문자열):문자열

하지만 안타깝게도 시간/분/초(날짜만)는 지원하지 않습니다.

귀하의 구체적인 경우:Date 객체에는 항상 "날짜" 정보도 포함되어 있습니다.중요하지 않은 경우 구문 분석하기 전에 표준 날짜 문자열을 간단히 연결할 수 없습니까?

시간 문자열 앞에 "01/01/2000"을 추가한 다음 Date를 적용하는 것을 고려해 보셨나요?

또는 입력을 받아 다음 위치에서 분할하는 토크나이저가 있을 수도 있습니다.정수로 변환할 수 있는 문자열 배열을 제공합니다.토크나이저는 작성하기 어렵지 않으며 Flex에 토크나이저가 없으면 재미있을 수 있습니다.

-아담

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top