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

VSTO开发:如何获取MsProject任务屏幕显示的时长字符串?

解决方案

获取与界面一致的完整时长字符串(变量d)

MSProject的Task对象自带DurationText属性,它直接返回界面上显示的完整时长文本,完全匹配界面内容,且不受用户设置的时长单位影响。示例代码:

// 假设task是已获取的目标Task对象
string d = task.DurationText;

比如界面显示5h时,d的值就是"5h";如果用户把单位改成天,界面显示1d,d就会是"1d"。

提取界面显示的时长数值(变量s)

从DurationText中提取数字部分即可得到与界面一致的数值字符串。可以用正则表达式匹配开头的数字(支持整数和小数,比如2.5h中的2.5),示例代码:

using System.Text.RegularExpressions;

// 从d中提取数值部分
Regex numRegex = new Regex(@"^\d+(\.\d+)?");
Match numMatch = numRegex.Match(d);
string s = numMatch.Success ? numMatch.Value : string.Empty;

这样当d是"5h"时,s就是"5";如果d是"2.5d",s就是"2.5"。

为什么不直接用Task.Duration除以60?

Task.Duration存储的是精确的分钟数,但MSProject界面显示时长时会根据单位设置和内置的取整规则(比如四舍五入、截断小数等)处理数值,直接计算Duration / 60得到的结果可能和界面显示不一致。比如界面显示5h,实际Duration可能是298分钟,298/60≈4.97,取整后才是5,但DurationText直接返回界面已经处理好的结果,更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:15:28