Convert dd-MMM-yy
to MM-dd-yyyy
Using Call Template in Oracle Integration Cloud (OIC)
Use Case:
In Oracle Integration Cloud (OIC), you often need to convert date formats between systems. For example, converting 17-Apr-25 (dd-MMM-yy) to 04-17-2025 (MM-dd-yyyy) for downstream applications like ERP or third-party APIs.
OIC's default XSLT functions do not directly support converting custom date formats like dd-MMM-yy to MM-dd-yyyy. You could use JavaScript, but that may not be reusable across integrations. Instead, Call Templates provide a centralized, reusable solution that improves maintainability and avoids logic duplication across flows.
Codes:
Caller template:
<xsl:template match="/">
<ns0:response-wrapper>
<ns0:output>
<xsl:variable name="NewDate">
<xsl:call-template name="formatDateTime">
<xsl:with-param name="DateTime" select="/ns0:request-wrapper/ns0:Input"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$NewDate"/>
</ns0:output>
</ns0:response-wrapper>
</xsl:template>
Reusable called template:
<xsl:template name="formatDateTime">
<xsl:param name="DateTime"/>
<xsl:choose>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Jan'"><xsl:text>01</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Feb'"><xsl:text>02</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Mar'"><xsl:text>03</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Apr'"><xsl:text>04</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='May'"><xsl:text>05</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Jun'"><xsl:text>06</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Jul'"><xsl:text>07</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Aug'"><xsl:text>08</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Sep'"><xsl:text>09</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Oct'"><xsl:text>10</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Nov'"><xsl:text>11</xsl:text></xsl:when>
<xsl:when test="substring-before(substring-after($DateTime,'-'),'-')='Dec'"><xsl:text>12</xsl:text></xsl:when>
</xsl:choose>
<xsl:text>-</xsl:text>
<xsl:choose>
<xsl:when test="string-length(substring-before($DateTime,'-')) = 1">
<xsl:value-of select="concat('0',substring-before($DateTime,'-'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-before($DateTime,'-')"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>-</xsl:text>
<xsl:value-of select="concat('20',substring-after(substring($DateTime,oraext:last-index-within-string($DateTime,'-')),'-'))"/>
</xsl:template>
Screenshots:
Testing:
Reference:
https://forums.oracle.com/ords/apexds/post/transform-date-from-dd-mon-yy-to-yyyy-mm-dd-4201
No comments:
Post a Comment