2009-04-29 8 views
2

私はmsxmlを使ってxmlファイルを解析しています。言語はC++です。 xmlファイルにはxsd:dateTime形式の日付と時刻が含まれています(このようなもの:2009-04-29T12:00:00Z)msxmlでxsd:dateTimeを読み取るには?

xsd:dateTimeをSYSTEMTIME、FILETIMEなどに簡単に変換できますか? VariantTime?

答えて

1

これはおそらくあなたに役立ちます:Using strptime to parse ISO 8601 formated timestamps on ioncannon.net

+0

感謝を。 strptimeは非常に興味深い関数ですが、Windowsでは利用できません... bsdライセンスの下でstrptimeの実装をインターネット上で見ましたが、Windowsでコンパイルするまではかなり動作する必要があると思います... – Name

+0

暗闇の中のショット、本当に。ごめんなさい。 : - \ – Tomalak

+0

それでも良い答えです。これは、UNIX上で同じことを探している人を助けるかもしれません。そして、それは私にWindows上の解決策を見つけるための新しい検索指示を与える。 – Name

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> 

は、あなたが変換を行うbeforスクリプトを有効にすることを忘れないでください:あなたの答えのための

xslDom.setProperty("AllowXsltScript", true) 
+0

あなたの答えをありがとうが、あなたのスクリプトがxsd:dateTimeではなくxsd:dateTimeからの日付をxsd:dateTimeに変換することを理解する限り、 "from xsd:dateTime"を変換する際の問題は、xsd:dateTimeがさまざまな構文を許すことです(例えば、日付の代わりに週番号など) – Name

関連する問題