我正在使用Noda Time(日期和时间Api)进行从UTC到提供的时区的日期转换。
下面是一个基于指定的noda时区id返回本地化DateTime对象的方法。
“utcDateTime”是要转换的DateTime,“timeZoneId”是时区的ID
public static DateTime ConvertDateTimeFromUtc(DateTime utcDateTime, string timeZoneId)
{
utcDateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc);
var timeZone = DateTimeZoneProviders.Tzdb[timeZoneId];
var convertedDateTime = Instant.FromDateTimeUtc(utcDateTime)
.InZone(timeZone)
.ToDateTimeUnspecified();
return convertedDateTime;
}
我从一个集合中获取一个utc的日期并尝试将其转换为提供的时区但我收到此错误
Ticks必须介于DateTime.MinValue.Ticks和DateTime.MaxValue.Ticks之间。
DateUtility.ConvertDateTimeFromUtc(collection.Select(c => c.date).DefaultIfEmpty(DateTime.MinValue).First(), time_zone)