< All Topics
Print

תאריכים

השוואת תאריכים

על מנת להשוות תאריכים ב WSO2 יש להוסיף קוד JS פשוט שיקבל את נתוני המשתנים שמחזיקים את התאריכים אותם צריך להשוות.

בנוסף, יש צורך במשתנה שיכיל את תוצאת ההשוואה בין התאריכים

<?xml version="1.0" encoding="UTF-8"?>
<api context="/getSamplePayload" name="getSamplePayload" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <log level="full"/>
            <property name="date1" scope="default" type="STRING" value="2022-11-06 13:23:44.000"/>
            <property name="date2" scope="default" type="STRING" value="2022-11-04 13:23:44.000"/>
            <property name="dateDiff" scope="default" type="STRING" value=""/>
            <script language="nashornJs"><![CDATA[var date1 = new Date(mc.getProperty('date1'));
            	var date2 = new Date(mc.getProperty('date2'));
            	var second=1000, minute=second*60, hour=minute*60, day=hour*24, week=day*7;
            	var difference = 0;
       			difference = (date2 - date1) / day;
       			mc.setProperty('dateDiff',difference);]]></script>
            <payloadFactory media-type="json">
                <format>{"Result":"$1"}</format>
                <args>
                    <arg evaluator="xml" expression="get-property('dateDiff')"/>
                </args>
            </payloadFactory>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

בדוגמה זו ביצענו השוואה בין שני תאריכים עם הצגה של הבדל בימים.

במידה ונרצה לקבל את התוצאה בשבועות/שעות/שניות, יש צורך להחליף את הערך הרלוונטי בחישוב difference (שורה 13)

שימוש בתאריך של היום

ניתן להשתמש בתאריך הנוכחי באמצעות יצירת Property מסוג SYSTEM-DATE.
להלן דוגמת קוד השותלת את התאריך הנוכחי בפרמטר 'To':

<?xml version="1.0" encoding="UTF-8"?>
<api context="/getSamplePayload" name="getSamplePayload" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <property expression="get-property('SYSTEM_DATE', 'yyyy-MM-dd')" name="currentDate" scope="default" type="STRING"/>
            <payloadFactory media-type="json">
                <format>
                    {"from": "2023-03-19", "to": "$1"}          
                </format>
                <args>
                     <arg expression="get-property('currentDate')"/>
                </args>
            </payloadFactory>
            <call>
                <endpoint>
                    <http method="post" uri-template="https://exampleservice.com/example">
                    </http>
                </endpoint>
            </call>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

תוכן עיניינים