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

如何在Saviynt到Active Directory的API属性映射中为enddate增加一天

如何在Saviynt到Active Directory的API属性映射中为enddate增加一天

嗨,我来帮你搞定这个需求!其实操作很简单,只需要在你现有的时间戳计算逻辑里加上一天对应的毫秒数就行,具体说明如下:

先理清楚你现有代码的核心逻辑:

  • user?.enddate.getTime() 是获取用户enddate的Java毫秒级时间戳(以1970-01-01为起始点)
  • 11644473600000 是用来把Java时间戳转换为Active Directory时间戳的偏移量(AD的时间起点是1601-01-01)
  • 10000 是把毫秒单位转换成AD要求的100纳秒单位
  • 你代码里的18400000应该是时区偏移的调整值,这个可以保留不变

要给enddate增加一天,我们只需要给user?.enddate.getTime()的结果加上86400000(因为1天=24小时×60分钟×60秒×1000毫秒=86400000毫秒)。

修改后的完整属性映射代码如下:

"accountExpires": "${
if((user.employeeType.equals('Contractor')) && (user?.enddate!=null))
{10000*(user?.enddate.getTime() + 86400000 + 11644473600000 + 18400000)} 
else {'0'}}"

另外提个小细节:Java里的逻辑与运算符推荐用&&(短路与),比&更高效,我已经帮你替换过来了,如果你的环境确实需要用&,再改回去就行。

测试一下的话,假设原enddate是Mar 03, 2022 00:00:00,加一天后就会变成Mar 04, 2022 00:00:00,对应的ADaccountExpires值也会正确同步过去。

备注:内容来源于stack exchange,提问作者SREEJITH R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:18:12