public virtual DateTime ToUniversalTime(DateTime time) {
if (time.Kind == DateTimeKind.Utc) {
return time;
}
long tickCount = time.Ticks - GetUtcOffset(time).Ticks;
if (tickCount>DateTime.MaxTicks) {
return new DateTime(DateTime.MaxTicks, DateTimeKind.Utc);
}
if (tickCount<DateTime.MinTicks) {
return new DateTime(DateTime.MinTicks, DateTimeKind.Utc);
}
return new DateTime(tickCount, DateTimeKind.Utc);
}