转换SPListItem的日期时,我得到一个十六进制字符串。
例如。 “0x01c9d2be | 0x809a8800”
然而,转换它的正确方法是什么,DateTime对象的格式是什么? 如果我想设置日期时间怎么办?我是否必须将其转换为十六进制格式并将其指定为十六进制字符串?
必须有一种更好,更理想的方法来提取修改DateTime对象。
有什么想法吗?
感谢。
答案 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