gpt4 book ai didi

java - 如何将 Sharepoint 日期从十六进制解析为 java.util.Date

转载 作者:行者123 更新时间:2023-11-30 07:36:04 25 4
gpt4 key购买 nike

我正在尝试将日期从 MS Sharepoint 解析为 java.util.Date。细节:我通过 SOAP GetListItems 方法从 Grails webapp 查询 Sharepoint。在 Sharepoint 列表中,日期显示正确,此处为 09/11/2009 但在 SOAP 响应中,我得到

0x01ca60cf|0x94894000
此外,这只发生在 docx、pptx 等文件类型上。

那么,有谁知道如何将其转换为 java.util.Date?我已经尝试将这两个十六进制值转换为 Long 或字节并移动它们,但我用谷歌搜索的所有算法仅适用于提供的示例十六进制值。

[编辑] 例如 this SO 解决方案(转换为 Java)不适用于我的值(value)观。

最佳答案

经过一些有根据的尝试和错误,我最终得到了这个:

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 )}"

你可能想要做更多的测试以确保我在这个场合得到正确的约会不是侥幸......

你有更多的值(value)来测试它吗?

编辑...

啊...我唯一不确定的是为什么我需要执行 /10000,但是 documentation for ticks in the DateTime object表明:

A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.

这解释了 :-)

关于java - 如何将 Sharepoint 日期从十六进制解析为 java.util.Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4013597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com