ServiceNow中获取上周开始日期及判断指定日期是否属于上周的方法
ServiceNow上周日期操作方法说明
1. 从当前日期时间计算上周开始日期
实现思路:借助ServiceNow自带的GlideDateTimeAPI的周截断方法,先对齐到本周的起始零点,再减去7天即可得到上周的开始日期时间。
代码实现:
function getLastWeekStartDateTime() { var currentTime = new GlideDateTime(); // 截断到本周开始时间(零点,周起始日跟随系统实例配置) currentTime.truncateToWeek(); // 减去7天得到上周开始时间 currentTime.addDays(-7); return currentTime; } // 调用示例 var lastWeekStart = getLastWeekStartDateTime(); gs.info('上周开始时间:' + lastWeekStart.getDisplayValue());
2. 判断传入的指定日期是否属于上周
实现思路:先分别计算出上周开始时间和本周开始时间,只要目标日期落在「大于等于上周开始,小于本周开始」的区间内,即可判定为属于上周。
完整代码示例(包含你提供的测试用例):
// 判定日期是否属于上周的公用方法 function checkIsLastWeek(targetDate) { // 获取本周起始时间 var currentWeekStart = new GlideDateTime(); currentWeekStart.truncateToWeek(); // 计算上周起始时间 var lastWeekStart = new GlideDateTime(currentWeekStart); lastWeekStart.addDays(-7); // 区间判断 return targetDate >= lastWeekStart && targetDate < currentWeekStart; } // 你的测试用例 var date1 = new GlideDateTime('2021-10-06 09:00:24'); var date2 = new GlideDateTime('2021-10-12 09:00:37'); // 输出结果 if(checkIsLastWeek(date1)) { gs.info('date 1 is present on last week.'); // 如需中文输出可替换为:gs.info('date1 属于上周'); } if(checkIsLastWeek(date2)) { gs.info('date2 属于上周'); }
补充说明:如果需要强制自定义周起始日(比如固定周一为周起始,不跟随实例配置),可以手动计算周偏移量替换
truncateToWeek()方法即可。
内容的提问来源于stack exchange,提问作者Gunjan Kiratkar
相关产品推荐
相关产品推荐

