我正在尝试将MS Sharepoint中的Date解析为java.util.Date。 细节: 我通过SOAP GetListItems方法从Grails webapp查询Sharepoint。 在Sharepoint列表中,日期显示正确,这里是2009年9月9日,但在SOAP响应中,我得到了
0x01ca60cf|0x94894000此外,这仅适用于docx,pptx等文件类型。
答案 0 :(得分:4)
经过一些受过良好教育的反复尝试后,我最终得到了这个:
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
,但是documentation for ticks in the DateTime object表明:
单个刻度表示一百 纳秒或千万分之一 第二。一个蜱中有10,000个蜱虫 毫秒。
这解释了: - )