2009-02-25 8 views
4

Je reçois une chaîne hexadécimale lors de la conversion de la date d'un SPListItem.DateTime Hex Format

par ex. "0x01c9d2be | 0x809a8800"

This question answers it.

Cependant, quelle est la bonne façon de le convertir, quel format est l'objet DateTime en? Que faire si je veux définir la date et l'heure? Devrais-je le convertir en format hexadécimal et l'assigner en tant que chaîne hexadécimale?

Il doit y avoir une meilleure et meilleure façon d'extraire modifier l'objet DateTime.

Des idées?

Merci. Une valeur DateTime dans .NET peut également être représentée en tant que valeur 64 bits.

+0

La réponse mise à jour de la question liée répond à tout ce que je peux dire. –

+0

Comment serais-tu capable de créer l'hexagone? –

+1

ne pouvez-vous pas juste représenter la valeur du champ comme une date? et juste définir la valeur du champ à une date aussi. – Jason

Répondre

3

Je suis capable d'extraire la date et l'heure. C'est très bien. Par conséquent, lorsque vous modifiez le DateTime d'un ListItem, il vous suffit de l'assigner en tant que format DateTime et il l'interprétera correctement; pas besoin de générer l'hexagone qu'il retourne.

2

Le format de chaîne étrange sur les champs DateTime sur les éléments de liste SharePoint est une variante d'une telle valeur 64 bits codée en tant que deux valeurs hexadécimales 32 bits. Je n'ai trouvé aucune documentation de Microsoft sur ce format. Mais par essais et erreurs, j'ai trouvé la méthode de conversion suivante:

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); 

où t contient le résultat.

Questions connexes