Cette structure est une valeur de 64 bits représentant le nombre
d'intervalles de 100 nanosecondes depuis le 1er janvier 1601.
Pourquoi est-il réglé "depuis 1601"? Pourquoi pas Unix 1970 ou même 2000? Que puis-je faire avec la compatibilité de dates si éloignées?
Répondre à moi-même.
La date ANSI définit le 1er janvier 1601 comme le jour 1 et est utilisée comme origine des dates entières COBOL. Cette époque est le début du cycle précédent de 400 ans d'années bissextiles dans le calendrier grégorien, qui s'est terminé avec l'année 2000. comme vous pouvez le trouver dans wikipedia sous l'entrée Julian_day.
Parce que 1/1/1601 était le début de l'époque.
Prenez-le de Raymond Chen:
Pourquoi l'Epoque Win32 est-elle le 1er janvier 1601?????
La structure
FILETIME
enregistre le temps sous forme d'intervalles de 100 nanosecondes depuis le 1er janvier 1601. Pourquoi cette date a-t-elle été choisie?Le calendrier grégorien fonctionne sur un cycle de 400 ans et 1601 est la première année du cycle qui était active au moment de la conception de Windows NT. En d'autres termes, il a été choisi pour que les mathématiques ressortent bien.
J'ai en fait l'e-mail de Dave Cutler confirmant cela.
Eh bien, le 1er janvier 1601 était le premier jour du XVIIe siècle. Et les horloges à pendule ont été inventées au 17ème siècle, permettant de mesurer le temps avec une précision de 1 seconde1. Donc (en théorie) il pourrait y avoir des références dans la littérature existante de cette période à des points temporels mesurés avec cette précision.
Mais en réalité, le choix est arbitraire. Il doit y avoir une "époque" et à condition
l'époque est suffisamment éloignée pour que les valeurs de "temps négatif" soient rares, et
le temps de bouclage est suffisamment loin dans le futur pour être dans quelques générations,
tout choix fera l'affaire.
Mais bon, si ça t'inquiète autant, envoie une lettre à Steve Balmer2.
J'ai tendance à croire la réponse d'Ian Boyd, compte tenu de la source revendiquée. Et la raison en est que cela facilite les calculs (pour le calcul de l'année bissextile grégorienne). Cependant, étant donné la minuscule de cette simplification et la faiblesse du raisonnement qui la sous-tend, le choix est (OMI) essentiellement arbitraire. (Non pas que je dis que c'est mal ...)
1 - OK ... probablement pas si précis.
2 - Ou Satya Nadella.
C'est un choix pragmatique.
Le calendrier occidental moderne n'a été cohérent qu'en 1752, lorsque la Grande-Bretagne (et ses colonies) a adopté le calendrier grégorien, qui avait été adopté dans la plupart de l'Europe catholique depuis 1582.
C'est le calendrier moderne avec les années bissextiles, etc. pour garder le 1er janvier aligné avec le solstice d'hiver.
Alors pourquoi ne pas partir du 1er janvier 1752? Parce que la règle de base des années bissextiles "C'est une année bissextile si l'année à deux chiffres est divisible par quatre sauf si le siècle à quatre chiffres est également divisible par quatre") a établi un cycle de 400 ans. Le premier cycle complet commençant le 1er janvier 1601 (au moins à Rome).
Les calculs de l'année bissextile et de la date sont suffisamment pénibles sans commencer à mi-chemin d'un cycle de quatre cents ans, donc 1600 est un assez bon début tant que vous vous souvenez que toutes les dates avant 1752 doivent être qualifiées par un emplacement géographique, car les dates britanniques étaient de 10 jours désynchronisés. avec des dates romaines à cette époque.
Comme cela a déjà été mentionné, je pense que la réponse populaire est parce que le calendrier grégorien fonctionne sur un cycle de 400 ans et 1601 est la première année du cycle qui était active au moment de la conception de Windows NT.
Le 1er janvier 1601 est l'origine des dates entières COBOL.
Il s'agit également du jour 1 par format de date ANSI.
Et si vous spéculez davantage selon ISO8601 qui est le format dans lequel il se trouve, avant 1583, le temps était basé sur le calendrier grégorien proleptique qui a 366 jours par an. Peut-être qu'ils ont juste arrondi au siècle prochain.