Шестнадцатеричный формат DateTime - PullRequest
4 голосов
/ 25 февраля 2009

Я получаю шестнадцатеричную строку при преобразовании даты SPListItem.

например. "0x01c9d2be | 0x809a8800"

Этот вопрос отвечает на него.

Однако, как правильно преобразовать его, в каком формате находится объект DateTime? Что если я хочу установить дату и время? Должен ли я преобразовать его в шестнадцатеричный формат и назначить его в виде шестнадцатеричной строки?

Должен быть лучший и идеальный способ извлечь модификацию объекта DateTime.

Есть идеи?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 26 февраля 2009

Я могу извлечь дату и время. Это нормально.

Поэтому, когда вы изменяете DateTime объекта ListItem, вы просто назначаете его как формат DateTime, и он будет интерпретировать его правильно; не нужно генерировать гекс, который он возвращает.

2 голосов
/ 26 февраля 2009

Значение DateTime в .NET также может быть представлено как 64-битное значение. Странный формат строки в полях DateTime в элементах списка SharePoint является вариантом такого 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 содержит результат.

1 голос
/ 20 мая 2013

Другое решение можно найти здесь. Это связано с тем, как Office 2007 хранит даты. SPListItem.Properties DateTime Поля в странном шестнадцатеричном формате

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...