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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:27:03