VisualStudio:将构建版本转换为日历日期

6

我知道Visual Studio生成的版本字符串是基于编译运行时的日期/时间。假设由Visual Studio生成的部分版本字符串为“3856.24352”,如何将其转换为编译所在的日历日期?


当前的.NET 4.0版本是v4.0.30319。如果你知道秘钥,就能理解这个意思。 - Hans Passant
2个回答

12

完整的版本字符串格式为major.minor.build.revision。其中build部分是自2000年1月1日以来的天数,而revision部分是距午夜的秒数除以2(有关详细信息,请参见此处)。

假设您的版本字符串是自动递增的类型,并且已经取出了build.revision部分,您可以使用以下方法将其转换回日期:

string buildRevision = "3856.24352";

string[] parts = buildRevision.Split('.');
int build = int.Parse(parts[0]);
int revision = int.Parse(parts[1]);

DateTime dateTimeOfBuild = new DateTime(2000, 1, 1) 
                                + new TimeSpan(build, 0, 0, 0) 
                                + TimeSpan.FromSeconds(revision * 2);

使用此代码将获得一个DateTime ,表示生成构建的时间(对于您的示例,它是2010年7月23日下午13:31:44)。


2

这里是一个简单的JavaScript工具,用于将.Net版本转换为日期:

示例输入:
1.0.7769.27451

示例输出:
2021年5月9日下午3:15:02

function convertBuildNumberToDate()
{
  var buildString = document.getElementById("input").value.split(".");
  var buildNumber = Number(buildString[2]);
  var revision = Number(buildString[3]);

  var date = new Date(2000, 1, 1);
  date.setDate(buildNumber);
  date.setSeconds(revision * 2);

  var output = date.toLocaleString();
  document.getElementById("output").innerHTML = output;
}
Build Number:
<br />
<input id="input" value="1.0.7769.27451" />
<button onclick="convertBuildNumberToDate()">Convert</button>

<br />
<br />

Build Date:
<br />
<div id="output"></div>


我今天(2021年12月6日)构建了我的应用程序并发布了版本1.0.8010.28393。然后我将此版本转换为日期,结果是2022年01月05日。我不知道出了什么问题? - Must.Tek
实际上,日期比应该的时间提前了一个月,尽管时间似乎是正确的。但我无法看出错误在哪里。即使答案中的示例也是错误的——7769 应该给出 2021 年 4 月 9 日。 - John Ball

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接