2009-04-01 6 views
4

J'ai besoin de stocker des dates dans SharePoint qui doivent remonter vers 5000 av. Idéalement, je voudrais pouvoir faire l'addition/la soustraction de date, comme ceci:Comment dois-je stocker les anciennes dates dans SharePoint?

oldDate = '5000 BC'; 
newDate = '1995 AD'; 
DateDiff(oldDate, newDate, 'Years'); // equals 6995 

Comment dois-je procéder? Construire une classe old_date basée sur des chaînes? Utilisez simplement des dates régulières, mais ajoutez un AD ou BC qui rend la date négative?

Répondre

0

J'ai fini par stocker les dates comme un champ de texte au format ISO 8601:
YYYY-MM-DDThh:mm:ss.sTZD

Vous ne devez pas stocker l'intégralité de la chaîne, par exemple si vous voulez stocker 5000 BC, entrez -5000-01-01 . Je n'ai pas très facilement mes additions et soustractions de date, mais il était beaucoup plus facile d'obtenir les données dans le format que je voulais.

5

Ceci est un problème sérieux non-trivial, et dépend vraiment de ce que vous voulez exactement faire avec ces dates. Par exemple, nous avons seulement utilisé le calendrier actuel (grégorien) depuis 1582. Avant cela, c'était le calendrier julien, et avant cela un ancien calendrier romain. Pour aggraver les choses, cette information est vraiment seulement pour l'Europe occidentale (et les domaines liés à la culture). Donc, si vous espérez avoir quelque chose qui vous donnera des dates acceptables pour les événements historiques avec un peu de calcul simple, vous êtes dans une grande déception.

Si vous voulez juste porter le Gregorian calendar en arrière, je suppose que c'est faisable. Cependant, il y a toujours une erreur, et à cette échelle, c'est important. Un article de Wikipédia:

sur des échelles de temps de milliers d'années, le calendrier grégorien tombe derrière les saisons, car le ralentissement de la rotation de la Terre fait chaque jour un peu plus au fil du temps (voir l'accélération des marées et sauter seconde) tout en l'année maintient une plus uniforme durée

2

Si vous êtes intéressé que dans les années et non en jours, vous pouvez alors construire un champ personnalisé avec l'éditeur personnalisé et stocker la valeur année valeur entière.

Les valeurs inférieures à zéro signifient BC et les valeurs supérieures ou égales à zéro signifient AD.

Questions connexes