广告帐户过期设置问题

Ad accountexpires setting issue

此代码在控制台程序中工作正常

DateTime enteredDate = DateTime.Parse("2/2/2019 1:16:47 PM");
//change the time to 6pm
enteredDate = enteredDate.Date.Add(new TimeSpan(18, 00, 0));
Debug.WriteLine($"Entered date : {enteredDate}");
Debug.WriteLine($"FromFileTime: DateTime.FromFileTime(enteredDate.ToFileTime())}");

输出是

Entered date : 2/2/2019 6:00:00 PM
FromFileTime: 2/2/2019 6:00:00 PM

当我为这样的 AD 属性设置这个时间时

directoryEntry.Properties["accountExpires"].Value = Convert.ToString(enteredDate .ToFileTime());

它将时间部分写为 12:00:00 下午而不是下午 6 点。我究竟做错了什么 ?

我假设这是一个时区问题,而您处于 UTC+6 时区。

我不认为你有任何问题。 accountExpires attribute stores the time as a number that "represents the number of 100-nanosecond intervals since January 1, 1601 (UTC)". That's exactly what ToFileTime() 适合你。你做对了。

但请注意,它是以 UTC 格式存储的。如果您将其视为 12:00 下午,那可能是因为您将其读取为 UTC 时间。

下午 6:00 你的时间是 12:00 下午 UTC