DateTime十六进制格式

时间:2009-02-25 16:38:05

标签: sharepoint datetime

转换SPListItem的日期时,我得到一个十六进制字符串。

例如。 “0x01c9d2be | 0x809a8800”

This question answers it.

然而,转换它的正确方法是什么,DateTime对象的格式是什么? 如果我想设置日期时间怎么办?我是否必须将其转换为十六进制格式并将其指定为十六进制字符串?

必须有一种更好,更理想的方法来提取修改DateTime对象。

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:3)

我能够提取日期和时间。没关系。

因此,当您修改ListItem的DateTime时,您只需将其指定为DateTime格式,它将正确解释它;无需生成它返回的十六进制。

答案 1 :(得分:2)

.NET中的DateTime值也可以表示为64位值。 SharePoint列表项上的DateTime字段上的奇怪字符串格式是这样的64位值的变体,编码为两个32位十六进制值。我没有找到这种格式的Microsoft文档。但通过反复试验,我找到了以下转换方法:

string[] words = strVal.Split('|');
int high = int.Parse(words[0].Substring(2), System.Globalization.NumberStyles.HexNumber);
uint low = uint.Parse(words[1].Substring(2), System.Globalization.NumberStyles.HexNumber);
long ticks = high;
ticks = ticks << 32;
ticks += low;
DateTime t = new DateTime(ticks);
t = t.AddYears(1600);

其中t表示结果。

答案 2 :(得分:1)

这里可以找到另一种解决方案。它有一些关于Office 2007如何存储日期的事情。 SPListItem.Properties DateTime Fields are in weird Hex format