このコードは長い間機能してきましたが、DateTime.NowをoutageEndDateパラメーターとして渡そうとすると壊れてしまいました。
public Outage(DateTime outageStartDate, DateTime outageEndDate, Dictionary<string, string> weeklyHours, string province, string localProvince)
{
this.outageStartDate = outageStartDate;
this.outageEndDate = outageEndDate;
this.weeklyHours = weeklyHours;
this.province = province;
localTime = TimeZoneInfo.FindSystemTimeZoneById(timeZones[localProvince]);
if (outageStartDate < outageEndDate)
{
TimeZoneInfo remoteTime = TimeZoneInfo.FindSystemTimeZoneById(timeZones[province]);
outageStartDate = TimeZoneInfo.ConvertTime(outageStartDate, localTime, remoteTime);
outageEndDate = TimeZoneInfo.ConvertTime(outageEndDate, localTime, remoteTime);
最後の行に表示されるエラーメッセージは、KindプロパティがDateTimeパラメーター(outageEndDate)に正しく設定されていないことです。私はグーグルで例を探してSOをチェックしましたが、エラーメッセージを本当に理解していません。
アドバイスをいただければ幸いです。
よろしく。
編集-正確なエラーメッセージは次のとおりです。
The conversion could not be completed because the supplied DateTime did not have the Kind
property set correctly. For example, when the Kind property is DateTimeKind.Local, the source
time zone must be TimeZoneInfo.Local. Parameter name: sourceTimeZone
編集:outageEndDate.Kind = Utc