2016-08-24 3 views
0

동적 인 동작을 통해 자바 스크립트가 실행되기 전에 여러 가지 검사를 수행하고 싶습니다. 데이터베이스에서 읽기 전용 필드 (P4_NEXT_RENEWAL_DATE)로 되돌아 오는 날짜가 오늘의 시스템 날짜보다 늦은 경우에만 지역을 표시하기를 원합니다.Oracle Apex 5의 다이나믹 동작이 오라클과 날짜를 비교할 수 없습니다.

내 오라클 테이블은 날짜 필드는 읽기 전용 페이지 항목에 반환했습니다

다음 갱신 날짜 :이 같은 값을 반환

P4_NEXT_RENEWAL_DATE

16-JUL-2017 

나는 아래 보이는 역동적 인 액션을 가지고 : 난 단지 내 옆에있는 경우 지역을 보여줄 것이라고 기대했다

(
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='Yes' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Agree') 
|| 
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='No' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Disagree') 
) 
&& 
Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date() 

가이 마지막 비트 작동하지 않습니다되고,

&& Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date() 

갱신 날짜는 오늘 날짜보다 늦었습니다 .... 그러나 날짜가 과거인지 미래인지에 관계없이 지역을 표시합니다.

내 읽기 전용 필드가 P4_NEXT_RENEWAL_DATE에 날짜의 문자열 버전을 반환하는지 또는 Apex가 오라클에서 오는 날짜 값을 알고 있으므로 자바 스크립트가 날짜 값으로 취급하는지 확신 할 수 없습니다. 몇 가지 date.parse() 메서드를 시도했지만 아무 것도 작동하지 않는 것 같습니다.

&& apex.item('P4_NEXT_RENEWAL_DATE').getValue() > new Date() 

어떤 조언 :

은 또한 다음 Date.parse를 사용하지 않고, 내가 돌아 원시 날짜 개체를 통해 것 직선 apex.item.getValue() 호출을 사용하지만, 운이 하나되지 시도 고맙습니다.

+0

필자는'Date.parse'에 실마리가 없지만 P4_NEXT_RENEWAL_DATE에 보유 된 값은 ** 문자열 **입니다. '16 -JUL-2017 '. 그래서 질문입니다 :'Date.parse'는 그 형식의 문자열을 처리 할 수 ​​있습니까? –

+0

오라클은 왜 날짜 열에서 날짜 값을 가져 와서 string 유형의 바인드 (?) 변수 인 페이지 항목에 보유합니까? 필자는 3 개의 오라클 부분 문자열을 사용하여 날짜를 3 부분으로 나누려고했습니다 ... "2017 년 7 월 16 일"등의 부분에서 문자열을 작성했지만 여전히 기쁨은 – smackenzie

+0

입니다. Google Date.parse와 DD-MMM-YYYY '해결책 제안. 'apex.item'는 자바 스크립트 함수 (오라클 제공)이며, "text"유형의 입력이며, 데이터베이스의 열을보고 있지 않으므로 날짜 값을 가지고 있다는 것을 모릅니다. –

답변

0

우선, 나는 이걸 MDN documentation for Date.parse에서 발견했습니다.

문자열 분석은 전적으로 구현에 따라 달라 지므로 ES5까지 Date.parse를 사용하지 않는 것이 좋습니다. 다른 호스트가 날짜 문자열을 구문 분석하는 방법에는 여전히 많은 차이점이 있으므로 날짜 문자열을 수동으로 구문 분석해야합니다 (여러 가지 형식을 수용하면 라이브러리가 도움이 될 수 있습니다).

RFC2822 또는 ISO 8601 날짜를 나타내는 문자열 (다른 형식을 사용할 수도 있지만 예기치 않은 결과 일 수 있음).

및이 documentation for the Date object.

참고 : Date 생성자 (및 Date.parse와 동일)의 날짜 문자열 구문 분석은 브라우저의 차이 및 불일치로 인해 사용하지 않는 것이 좋습니다.

나는 다양한 브라우저에서 약간의 테스트를 거쳤으며 Chrome은 Date.parse와 Date 생성자에 대해 'DD-MON-YYYY'형식으로 값을 행복하게 처리하지만 Firefox와 IE에서는 그 값을 행복하게 처리합니다.

자바 스크립트에서 날짜를 조작/비교하려면 Moment.js 날짜 유틸리티 라이브러리를 사용하여 이러한 문제를 해결하는 것이 좋습니다. PL/SQL에서 날짜를 비교하는 방법을 찾아보십시오.

관련 문제