TimeZone.ToLocalTime(DateTime) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne l'heure locale qui correspond à une valeur d'heure et de date spécifiée.
public:
virtual DateTime ToLocalTime(DateTime time);
public virtual DateTime ToLocalTime (DateTime time);
abstract member ToLocalTime : DateTime -> DateTime
override this.ToLocalTime : DateTime -> DateTime
Public Overridable Function ToLocalTime (time As DateTime) As DateTime
Paramètres
- time
- DateTime
Une heure de temps universel (UTC, Universal Time Coordinated).
Retours
Un objet DateTime dont la valeur est l'heure locale qui correspond à time
.
Remarques
Le tableau suivant montre la relation entre le time
paramètre et la DateTime valeur retournée par cette méthode.
Paramètre time |
Comportement | Valeur retournée |
---|---|---|
Heure UTC (DateTimeKind.UtcCoordinated Universal Time). | Convertit l’heure UTC en heure locale. | Un objet DateTime dont la valeur est l'heure locale qui correspond à time . |
Heure locale (DateTimeKind.Local). | Aucune conversion n’est nécessaire. | Même DateTime valeur représentée par le time paramètre . |
Heure non spécifiée (DateTimeKind.Unspecified). | Suppose que l’heure est UTC et la convertit de l’heure UTC à l’heure locale. | Un objet DateTime dont la valeur est l'heure locale qui correspond à time . |
Si le fuseau horaire local observe l’heure d’été, ToLocalTime applique la règle d’ajustement actuelle à time
lors de l’exécution de la conversion.
Notes
La ToLocalTime méthode reconnaît uniquement la règle d’ajustement actuelle de l’heure d’été pour le fuseau horaire local. Par conséquent, il est garanti de retourner avec précision l’heure locale correspondant à une heure UTC particulière uniquement pendant la période pendant laquelle la règle d’ajustement la plus récente est en vigueur. Il peut retourner des résultats inexacts si time
est une valeur de date et d’heure historique qui a été soumise à une règle d’ajustement précédente.
La ToLocalTime méthode correspond à la TimeZoneInfo.ConvertTimeFromUtc méthode avec son destinationTimeZone
paramètre défini sur TimeZoneInfo.Local. Dans la mesure du possible, utilisez la TimeZoneInfo.ConvertTimeFromUtc méthode .
Notes pour les héritiers
Bien que cela ne soit pas obligatoire, dans la plupart des cas, les classes dérivées s’exécutant sous .NET Framework version 2.0 doivent remplacer l’implémentation par défaut de cette méthode. Dans les versions 1.0 et 1.1 du .NET Framework, la ToLocalTime
méthode a appelé la méthode et a été ajustée pour l’heure GetUtcOffset(DateTime) d’été lors du retour de l’heure locale. Toutefois, à compter de .NET Framework 2.0, le comportement de l’implémentation par défaut dépend de la Kind propriété du time
paramètre . Si sa valeur est Local, cette méthode retourne time
inchangé. Si sa valeur est Utc ou Unspecified, cette méthode suppose que time
est UTC et la convertit en heure système locale sans appeler la GetUtcOffset(DateTime) méthode.
Le code suivant fournit un remplacement simple de l’implémentation par défaut de la ToLocalTime
méthode . Dans ce code, la internalTimeZone
variable représente une instance privée de la TimeZone
classe :
public override DateTime ToLocalTime(DateTime time)
{
if (time.Kind == DateTimeKind.Local)
{
return time;
}
else if (time.Kind == DateTimeKind.Utc)
{
DateTime returnTime = new DateTime(time.Ticks, DateTimeKind.Local);
returnTime += this.GetUtcOffset(returnTime);
if (internalTimeZone.IsDaylightSavingTime(returnTime))
returnTime -= new TimeSpan(1, 0, 0);
return returnTime;
}
else
{
throw new ArgumentException("The source time zone cannot be determined.");
}
}
Public Overrides Function ToLocalTime(time As Date) As Date
If time.Kind = DateTimeKind.Local Then
Return time
ElseIf time.Kind = DateTimeKind.Utc Then
Dim returnTime As New Date(time.Ticks, DateTimeKind.Local)
returnTime += me.GetUtcOffset(returnTime)
if internalTimeZone.IsDaylightSavingTime(returnTime) Then
returnTime -= New TimeSpan(1, 0, 0)
End If
Return returnTime
Else
Throw New ArgumentException("The source time zone cannot be determined.")
End If
End Function