You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell将DateTimePicker值转换为NTTE时间格式?

解决DateTimePicker值转NTTE(AD FileTime)格式的问题

嘿,刚好之前处理过Active Directory时间戳的相关需求,给你捋清楚怎么弄!

首先得明确:你说的NTTE格式其实就是Windows的FileTime——它是从1601年1月1日(UTC)开始,以100纳秒为间隔的计数,这也是Active Directory存储时间戳的标准格式。

你用的DateTimePicker的Value属性是DateTime类型,.NET框架里已经内置了直接转换的方法,完全不用自己写复杂的转换逻辑:

核心转换代码示例

C#实现

// 获取DateTimePicker选中的本地时间
DateTime selectedLocalTime = dateTimePicker1.Value;

// 转换为UTC时间(AD时间戳统一用UTC存储,这步很关键!)
DateTime utcTime = selectedLocalTime.ToUniversalTime();

// 直接转换为NTTE(FileTime)格式的数值
long ntteTimestamp = utcTime.ToFileTimeUtc();

反向转换(从NTTE转回DateTime)

如果之后需要把AD里的NTTE值转回可读时间,也有现成方法:

long adNtteValue = 133245678901234567; // 示例AD中的NTTE值
DateTime readableTime = DateTime.FromFileTimeUtc(adNtteValue);

重要注意事项

  • 必须转换为UTC时间!Active Directory中所有时间戳都是基于UTC存储的,要是直接用本地时间转换,会出现时间偏移的问题,导致AD条目时间不准确。
  • ToFileTimeUtc()方法会自动处理DateTime的Kind属性,哪怕你的DateTime已经是UTC类型,用这个方法也更稳妥,避免本地/UTC混淆的坑。

这样处理后,你得到的ntteTimestamp就是完全符合AD要求的NTTE格式数值,可以直接用来更新对应的AD属性啦。

内容的提问来源于stack exchange,提问作者Marcel Friesen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:34:31