如何转换本地时区格式的AD帐户到期

2020-09-21 03:02发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在我当前的项目IDM 7.2 SP10中,我们从AD读取accountexpires属性,然后使用uInt8ToDate函数将其转换为可读格式。

https://help.sap.com/saphelp_nwidmic71/en/ using_functions/internal_functions/dse_uint8todate.htm

此功能正在将日期转换为可读的GMT格式,而客户希望在本地时间显示该日期。 在搜索SCN时,我在下面的帖子中看到" True"开关在uInt8ToDate函数中不起作用,甚至我也观察到了这一点。

https://archive.sap.com/discussions/thread/3469115

任何人都可以指导如何转换本地时区的日期。 我尝试使用getTimezoneOffset(),但抛出错误。 对JavaScript公式的任何帮助将不胜感激。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在我当前的项目IDM 7.2 SP10中,我们从AD读取accountexpires属性,然后使用uInt8ToDate函数将其转换为可读格式。

https://help.sap.com/saphelp_nwidmic71/en/ using_functions/internal_functions/dse_uint8todate.htm

此功能正在将日期转换为可读的GMT格式,而客户希望在本地时间显示该日期。 在搜索SCN时,我在下面的帖子中看到" True"开关在uInt8ToDate函数中不起作用,甚至我也观察到了这一点。

https://archive.sap.com/discussions/thread/3469115

任何人都可以指导如何转换本地时区的日期。 我尝试使用getTimezoneOffset(),但抛出错误。 对JavaScript公式的任何帮助将不胜感激。

付费偷看设置
发送
4条回答
浮生未央
1楼 · 2020-09-21 04:02.采纳回答

Hello C Kumar,

我使用此脚本从AD检索accountExpires,并将其设置为AD的本地有效到属性:

 var MSTimestamp = Par;
 var MSTimestampNormalized =(MSTimestamp-116444736000000000-864000000000)/10000;
 var date = new Date(MSTimestampNormalized);

 date.toGMTString();
 var MonthValue = new Array(" 01"," 02"," 03"," 04"," 05"," 06"," 07"," 08"," 09"," 10"," 11",  " 12");
 var dayOfMonth =''+ date.getDate();
 如果(dayOfMonth.length == 1){dayOfMonth =" 0" + dayOfMonth;  }
 return date.getFullYear()+"-" + MonthValue [date.getMonth()] +"-" + dayOfMonth; 

不过,从来没有考虑过GMT和CET之间的时间间隔。 由于与accountExpires和validto的差异,我总是要花费一天(864000000000)。

我想我必须加上或减去另一个毫秒值来匹配我们拥有的不同时区(周围遍布 世界),如果sdomeone实际上会因为一天还没有过去而抱怨用户被过早锁定。 我想每个国家/地区的本地域控制器都可以正确处理日期。

如果需要,我可以使用时区时差(以小时为单位)并将其存储在每个公司中。 然后,我将在脚本中使用此变量来添加/减去计算新日期Datey之前的小时数。

最诚挚的问候

Dominik

hongfeng1314
2楼-- · 2020-09-21 03:42
< p>嗨,多米尼克,

能否让我知道如何将当前日期转换为LDAP/文件时间,以便可以将结束日期传递到AD中的AccountExpires属性

此致

Deva

何必丶何苦呢
3楼-- · 2020-09-21 03:53
如果(Par.search("")> -1){
   Par = Par.split("")[0];
  }
 //如果需要,添加T00:00:00
  如果(Par.search(" T")== -1){
   Par + =" T00:00:00";
  }
  var splitted = Par.split(" T");
 //第一部分
  var splittedDate = splitted [0];
  splittedDate = splittedDate.split("-");
  var year = splittedDate [0];
  var month = splittedDate [1]-1; //需要减1
  var day = splittedDate [2];
 //第二部分
  var splittedTime = splitted [1];
  splittedTime = splittedTime.split(":");
  var hours = splittedTime [0];
  var分钟= splittedTime [1];
  var seconds = splittedTime [2];
 //新的日期对象
  var adDate = Date.UTC(年,月,日,小时,分钟,秒);
  adDate = adDate * 10000 + 116444736000000000 + 864000000000; //必须很高!
 //错误处理
  if(adDate =="" || adDate == null || adDate.toString()==" NaN" || Par> =" 9999-12-31"){
   adDate =" 9223372036854775807";
  }
  返回adDate;

 

这应该有所帮助。 参数的格式可以为" 2018-04-25"," 2018-04-25 12:15:00"或" 2018-04-25T12:15:00",请测试是否符合您的需求。 也许必须修改adDate的计算方式,但它对我有用

歪着头看世界
4楼-- · 2020-09-21 03:50

感谢dominik,您的脚本适用于任何类型的日期类型。

一周热门 更多>