Team Foundation Server 2017全局时区设置及工作项日期显示问题
针对TFS工作项日期字段时区问题的解决方案
一、统一所有用户时区的实现方式
TFS没有提供直接批量设置用户时区的图形化界面,但可以通过以下两种方式完成批量配置:
- 使用REST API+PowerShell脚本批量更新:
- 调用TFS的REST API获取所有用户的详细信息,包括当前时区配置
- 编写PowerShell脚本,循环调用更新用户配置的API接口,将所有用户的时区统一设置为目标时区(例如UTC或公司指定的固定时区)
- 借助Active Directory组策略辅助:
如果你的TFS环境已集成AD,可以通过AD组策略强制用户本地系统使用统一时区。但需注意,这仅能控制用户本地系统的时区,并非直接修改TFS平台内的用户时区设置,仅能作为辅助手段减少时区差异。
二、修改工作项类型强制字段使用特定时区
这个方案可以实现强制字段以指定时区存储和显示时间,具体步骤如下:
- 导出工作项类型定义文件:
使用witadmin命令导出目标工作项类型的配置文件:witadmin exportwitd /collection:http://你的TFS服务器地址:8080/tfs/项目集合名 /p:项目名 /n:工作项类型名 /f:导出的文件名.xml - 修改日期字段配置:
在导出的XML文件中找到目标日期字段的配置节点,进行以下调整:- 将字段的默认值设置为目标时区12:00 AM对应的UTC时间(例如,若指定北京时间UTC+8,12:00 AM对应的UTC时间为前一天的16:00:00)
- 添加字段验证规则,确保用户输入的时间会被转换为目标时区的12:00 AM后存储为对应UTC值;若不需要用户修改时间部分,可将字段设置为只读
- 导入修改后的配置文件:
使用witadmin命令将修改后的配置导回TFS:witadmin importwitd /collection:http://你的TFS服务器地址:8080/tfs/项目集合名 /p:项目名 /f:修改后的文件名.xml - 效果说明:
配置完成后,所有用户查看该字段时,TFS会将存储的UTC时间转换为目标时区的12:00 AM显示,无论用户自身的时区设置如何,都能看到统一的12:00 AM时间。
内容的提问来源于stack exchange,提问作者Randy Wong
相关产品推荐
相关产品推荐

