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

如何将Azure AD令牌模型的DateTimeOffset类型ExpiresIn转换为秒数

解决方案

你代码中的tokenModel.ExpiresIn是DateTimeOffset类型的绝对过期时间点,而TimeSpan.FromSeconds()要求传入的是距离当前时间的相对秒数,所以需要先计算当前UTC时间和过期时间的差值,再提取总秒数即可。

实现代码

// 计算UTC时间下的剩余有效秒数
double remainingValidSeconds = (tokenModel.ExpiresIn - DateTimeOffset.UtcNow).TotalSeconds;
// 边界处理:如果令牌已过期,剩余秒数设为0,避免不符合预期的缓存配置
remainingValidSeconds = Math.Max(remainingValidSeconds, 0);
// 赋值给缓存过期配置
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(remainingValidSeconds);

额外优化建议

  • 模型命名调整:你当前AadToken类里的字段名为ExpiresIn,但存储的是绝对过期时间,和行业通用命名习惯不符(ExpiresIn通常用来指代相对当前的有效时长,单位一般为秒),建议将字段重命名为ExpiresOn,降低后续维护的理解成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:27:04