2011-09-05 37 views
2

我正在使用XslCompiledTransform對象並嘗試解析DateTime對象。它的工作原理是,但只顯示GMT日期。 當調試代碼,該對象具有正確的值(GMT + 2)XslCompiledTransform與XSLT 1.0毫秒:format-time()時區

我在XSLT使用該:

ms:format-time(order/@orderDate, 'H:m', 'NL-nl') 

輸出具有與正確值的兩小時的時差。 這可以使用XSLT 1.0和默認的.Net 4框架方法來解決。 (C#)

編輯:可以這樣無需添加代碼的XSLT https://groups.google.com/d/topic/microsoft.public.xsl/1mPHhh6F62o/discussion

EDIT2解決:似乎越來越多的人在XSLT 1格式化時間問題,不同的時區:http://forums.tizag.com/showthread.php?t=17429

回答

1

好吧,這裏是我的XSLT的頂部:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:ms="urn:schemas-microsoft-com:xslt" 
      xmlns:dt="urn:schemas-microsoft-com:datatypes" 
      xmlns:user="urn:my-scripts"> 
    <xsl:decimal-format name="euro" decimal-separator="," grouping-separator="."/> 
    <ms:script language="C#" implements-prefix="user"> 
    <![CDATA[    
     public string correctTime(DateTime dt) 
     { 
      return dt.ToLocalTime().ToString("HH:mm"); 
     } 
    ]]> 
    </ms:script> 
    <xsl:template match="/"> 
    ... 

進一步壓低XSLT一些HTML標記語言次使用方法上面提到的:

<tr> 
    <td>Tijd:</td> 
    <td> 
     <xsl:value-of select="user:correctTime(order/@datum)"/> 
    </td> 
</tr> 

荷蘭有現在(因爲夏令時)GMT + 2 不使用這種方法,它只是將我的價值GMT 的因此就出現了一個2小時的時差。我們之前的1小時差異沒有被發現。但是因爲現在是2小時,所以我們注意到了:)