簡體   English   中英

如何將Sharepoint Date從Hex解析為java.util.Date

[英]How to parse a Sharepoint Date from Hex to a java.util.Date

我正在嘗試將MS Sharepoint中的Date解析為java.util.Date。 詳細信息:我通過SOAP GetListItems方法從Grails Web應用程序查詢一個Sharepoint。 在Sharepoint列表中,正確顯示了日期,這里是09/11/2009,但是在SOAP響應中,我得到了

0x01ca60cf|0x94894000
此外,這僅在docx,pptx等文件類型下發生。

那么,有誰知道如何將其轉換為java.util.Date? 我已經嘗試過將兩個十六進制值轉換為Long或字節並進行移位,但是我用Google搜索的所有算法僅適用於提供的示例十六進制值。

[編輯]例如, 這種 SO解決方案(轉換為Java)不適用於我的價值觀。

經過一些有教養的反復試驗后,我得出以下結論:

def date = "0x01ca60cf|0x94894000"

// Parse our hex numbers into a single number
def nums = Long.parseLong( date.split( /\|/ ).collect { it.replace( '0x', '' ) }.join( '' ), 16 ) / 10000
// MS calendar goes from 1600...  Java's goes from 1970, so we need to make up the difference
nums += Calendar.instance.updated( year:1601, month:0, date:1 ).time.time

println "Converted date is ${new Date( nums as Long )}"

您可能需要做更多的測試,以確保這不是偶然,我在這種情況下得到了正確的約會...

您是否有更多價值可以對其進行測試?

編輯 ...

啊...我不確定的唯一原因是為什么我需要這樣做/ 10000 ,但是DateTime對象滴答聲文檔顯示:

一個滴答聲代表一百納秒或一百萬分之一秒。 毫秒內有10,000個滴答聲。

解釋它:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM