0

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

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 点。我究竟做错了什么 ?

4

1 回答 1

2

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

我不认为你有任何问题。该accountExpires属性将时间存储为“表示自 1601 年 1 月 1 日 (UTC) 以来 100 纳秒间隔的数量”的数字。这正是ToFileTime()对你有用的。你做对了。

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

下午 6:00 您的时间是世界标准时间下午 12:00

于 2019-02-07T00:22:39.630 回答