J'utilise une date (1/1/2018 11:30 AM) avec le fuseau horaire (heure normale de l'Est) et la convertir en date UTC (2018-01-01T16: 30 : 00Z). La date d'origine est vraiment Eastern Daylights Savings, donc quand les développeurs font une conversion avec l'UTC, ils obtiennent 12h30 au lieu de 11h30. Si je fais 8/26/2018 11:30 AM, ça marche bien. Mes fuseaux horaires sont dans les formats Windows .NET.Date à laquelle l'UTC ne tient pas compte de l'heure d'été
Y a-t-il un moyen avec ma méthode ci-dessous pour obtenir l'UTC correct qui a l'heure d'été à partir du fuseau horaire qui est Standard avec NodaTime?
2018-01-01T16:30:00Z = Helper.GetUtcTimeZone("1/1/2018 11:30 AM", "Eastern Standard Time").ToString();
Méthode
public static Instant GetUtcTimeZone(DateTime dateTime, string timeZone)
{
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZone ?? TimeZoneInfo.Local.StandardName);
if (timeZoneInfo != null)
{
if (dateTime.Kind == DateTimeKind.Unspecified)
{
dateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZoneInfo);
}
}
return Instant.FromDateTimeUtc(dateTime);
}
Notez également que la première date que vous avez indiquée est * Janvier *, donc elle ne peut pas être en EDT. –