如何用msxml读取xsd:dateTime?

时间:2009-04-29 19:25:23

标签: c++ xml datetime msxml

我正在使用msxml来解析xml文件。语言是C ++。 xml文件包含一些使用xsd:dateTime格式的日期和时间(类似于:2009-04-29T12:00:00Z)

有没有一种简单的方法可以将xsd:dateTime转换为类似SYSTEMTIME,FILETIME或VariantTime的内容?

2 个答案:

答案 0 :(得分:1)

也许这可以帮助你:Using strptime to parse ISO 8601 formated timestamps on ioncannon.net。

答案 1 :(得分:0)

您可以使用javascript:

<xsl:transform
id="integra-transformer"
version="1.0"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="urn:date-scripts">

<xsl:output method="xml" indent="yes" />

<msxsl:script 
    implements-prefix="date" 
    language="javascript">
    <![CDATA[
    Date.prototype.toISO8601ShortString = function () {
        var zeropad = function (num) { return ((num < 10) ? '0' : '') + num;  }
        var str = "";
        var date = new Date();
        str += date.getUTCFullYear();
        str += "-" + zeropad(date.getUTCMonth() + 1);
        str += "-" + zeropad(date.getUTCDate());
        str += "T" + zeropad(date.getUTCHours()) +
        ":" + zeropad(date.getUTCMinutes());
        return str;
    }

    function getToday()
    {
        var d;
        d = new Date();
        return(d.toISO8601ShortString());
    }
    ]]>
</msxsl:script>


<xsl:template match="/">
         <date>
             <xsl:value-of select="date:getToday()"/>
         </date>
     </xsl:template>
 </xsl:transform>

不要忘记在进行转换时启用脚本:

xslDom.setProperty("AllowXsltScript", true)