XSLT-transformation string zu datetime-format
Ich versuche zu konvertieren ein Datum/Zeit im format-string zu datetime-format. Momentan habe ich diese, aber es funktioniert nicht:
<xsl:function name="hcim:ParseDateTime" as="xs:dateTime">
<xsl:param name="DateTimeAsString" as="xs:string"/>
<xsl:variable name="date" select="xs:date(substring($DateTimeAsString, 0, 10))"/>
<xsl:variable name="time" select="xs:time(substring($DateTimeAsString, 11, 8))"/>
<xsl:value-of select="dateTime($date, $time)" />
</xsl:function>
Die Fehler ich erhalte, ist:
XSLT2 Transformation failed: Error in XPath 2.0 expression
(Cast failed, invalid lexical value - xs:date 'String' - xs:date)
Error occurred in file '******' in statement
'select="xs:date(substring($DateTimeAsString, 0, 10))"'.
Gibt es einen besseren Weg, dies zu tun? Meine eingehende Zeichenfolge im format:
2011-07-15 01:05:14 PM
InformationsquelleAutor farbodg | 2013-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die
xs:date
Teil denke ich<xsl:variable name="date" select="xs:date(substring($DateTimeAsString, 1, 10))"/>
funktionieren sollte. Für diexs:time
Teil ich glaube, Sie brauchen mehr Arbeit, als das extrahieren einer Teilzeichenkette, als Ihre Probe hatPM
so würden Sie brauchen, um zu konvertieren, um eine 24 Stunden Uhr. Und einen Rückgabewert eines bestimmten Typs in einer Funktion verwenden<xsl:sequence select="..."/>
, nicht<xsl:value-of select="..."/>
.Habe ich gelesen, http://en.wikipedia.org/wiki/12_hour_clock und versuchte zu realisieren, dass:
Angesichts der Eingangs
Sächsischen 9.5 verwandelt, in
Die Funktion sollte wohl explizit überprüfen Sie das Vorhandensein von
PM
anstatt anzunehmen, dass die mangelnde Gleichstellung mitAM
heißt, es ist einPM
Zeit.substring($DateTimeAsString, 0, 10)
produziert2011-07-1
in diesem Fall, denn es gibt kein Zeichen an der 0. position.InformationsquelleAutor Martin Honnen