控制台程序中的此代码可以正常工作
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 PM,而不是6pm。我究竟做错了什么 ?
答案 0 :(得分:1)
我认为这是一个时区问题,您处于UTC + 6时区。
我认为您根本没有问题。 accountExpires
属性将时间存储为一个数字,表示“自1601年1月1日(UTC)起100纳秒间隔的数量”。这就是ToFileTime()
为您所做的。您做对了。
但是请注意,它存储在UTC中。如果您看到的是下午12:00,那可能是因为您将其读为UTC时间。
6:00 PM,您的时间是UTC的12:00 PM