Partager via


SystemTimeToVariantTime, fonction (oleauto.h)

Convertit une heure système en une représentation de variante.

Syntaxe

INT SystemTimeToVariantTime(
  [in]  LPSYSTEMTIME lpSystemTime,
  [out] DOUBLE       *pvtime
);

Paramètres

[in] lpSystemTime

Heure système.

[out] pvtime

Heure de variante.

Valeur retournée

La fonction retourne TRUE en cas de réussite et FALSE dans le cas contraire.

Remarques

Une heure de variante est stockée sous la forme d’une valeur réelle de 8 octets (double), représentant une date comprise entre le 1er janvier 1900 et le 31 décembre 9999 inclus. La valeur 2.0 représente le 1er janvier 1900 ; 3.0 représente le 2 janvier 1900, et ainsi de suite. L’ajout de 1 à la valeur incrémente la date d’un jour. La partie fractionnaire de la valeur représente l’heure de la journée. Par conséquent, 2,5 représente midi le 1er janvier 1900 ; 3.25 représente 6 :00 le 2 janvier 1900, et ainsi de suite. Les nombres négatifs représentent les dates antérieures au 30 décembre 1899.

L’heure de variante est résolue en une seconde. Toutes les millisecondes dans la date d’entrée sont ignorées.

Notes

Lorsque vous travaillez avec une heure de variante, gardez à l’esprit le jour supplémentaire ajouté dans les années bissextiles, qui peut produire des résultats inattendus s’il n’est pas pris en charge. Pour plus d’informations, consultez Préparation à l’année bissextile.

La structure SYSTEMTIME est utile pour les raisons suivantes :

  • Il s’étend sur toutes les périodes de temps/date. La date/heure MS-DOS est limitée à représenter uniquement les dates comprises entre le 1/01/1980 et le 31/12/2107.
  • Les éléments date/heure sont tous facilement accessibles sans avoir à effectuer de décodage de bits.
  • Les fonctions de mise en forme des données et de la mise en forme des données nationales GetDateFormat et GetTimeFormat prennent une valeur LPSYSTEMTIME comme entrée.
  • Il s’agit du format de données heure/date par défaut pris en charge par Windows.
La fonction SystemTimeToVariantTime accepte les dates non valides et tente de les corriger lors de la résolution à une heure VARIANT. Par exemple, une date non valide telle que le 29/02/2001 sera résolue au 1/03/2001. Seuls les jours étant fixes, les valeurs de mois non valides entraînent le retour d’une erreur. Les jours sont vérifiés entre 1 et 31. Les jours négatifs et les jours supérieurs à 31 entraînent une erreur. Un jour inférieur à 31 mais supérieur au jour maximal de ce mois a le jour promu au jour approprié du mois suivant. Un jour égal à zéro est résolu comme le dernier jour du mois précédent. Par exemple, une date non valide telle que le 00/02/2001 sera résolue au 31/01/2001.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête oleauto.h
Bibliothèque OleAut32.lib
DLL OleAut32.dll