Если вы вводите дату в качестве местного времени в Нью-Йорке, вы можете попробовать это.
Протестировано с угловым регистром 8 марта 2020 года в 2:00 AM
static void Main(string[] args)
{
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var hkTimeZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
var timeStamp = DateTime.Parse("8/3/2020 0:59:59");
PrintUtc(timeStamp, est);
Console.WriteLine("To HK {0}", ToHkDateTime(timeStamp, est, hkTimeZone));
timeStamp = DateTime.Parse("8/3/2020 1:59:59");
PrintUtc(timeStamp, est);
Console.WriteLine("To HK {0}", ToHkDateTime(timeStamp, est, hkTimeZone));
timeStamp = DateTime.Parse("8/3/2020 3:00:00");
PrintUtc(timeStamp, est);
Console.WriteLine("To HK {0}", ToHkDateTime(timeStamp, est, hkTimeZone));
}
private static void PrintUtc(DateTime timeStamp, TimeZoneInfo est)
{
Console.WriteLine("");
if (est.IsDaylightSavingTime(timeStamp))
{
Console.WriteLine("IsDaylightSavingTime");
}
Console.WriteLine("GetUtcOffset: {0}", est.GetUtcOffset(timeStamp));
Console.WriteLine(timeStamp.ToString("F"));
Console.WriteLine("ToUtc {0}",
TimeZoneInfo.ConvertTimeToUtc(timeStamp, est));
}
private static DateTime ToHkDateTime(DateTime timeStamp, TimeZoneInfo est, TimeZoneInfo hkTimeZone)
{
return TimeZoneInfo.ConvertTimeFromUtc(
TimeZoneInfo.ConvertTimeToUtc(timeStamp, est),
hkTimeZone);
}