【问题标题】:Calculating % of days VB.NET计算 VB.NET 的天数百分比
【发布时间】:2013-04-16 19:30:46
【问题描述】:

如何计算使用 VB.NET 完成的天数百分比?

datareader 获取project_startproject_finished,在SQL-Server-2012 中存储为Date()

这是我尝试过的:

Dim StartDate As New Date(datareader("project_start"))
Dim FinishDate As New Date(datareader("project_finish"))
Dim Percentage As Date = Date.FromOADate(StartDate.DayOfYear) / Date.FromOADate(FinishDate.DayOfYear) / 100

但我收到此错误:

Operator '/' is not defined for types 'Date' and 'Date'.

【问题讨论】:

  • “完成天数百分比”是什么意思?
  • 想一想你在做什么——尝试划分日期。这甚至意味着什么?
  • 查看TimeSpan - 这应该可以帮助您获得所需的结果。从 EndDate 中减去 Startdate 将得到一个代表 100% 的 TimeSpan。
  • 另外,DayOfYear 究竟能为您做什么?如果一个项目在 12 月 18 日开始并在 1 月 12 日结束怎么办?也不需要知道另一条信息(例如,是实际的项目完成日期,还是您试图将完成日期与今天的日期进行比较)?你看过 SQL Server 中的DATEDIFF 吗?它可以在您的前端没有所有此类混乱和转换的情况下进行计算。

标签: asp.net vb.net date sql-server-2012 percentage


【解决方案1】:

您需要减去 Dates 并使用 TotalDays 属性。下面的示例代码:

Dim start As DateTime = DateTime.Now.AddDays(-50)
Dim endDate As DateTime = DateTime.Now.AddDays(50)

Dim today As DateTime = DateTime.Now

Dim sumDays = (endDate - start).TotalDays
Dim daysToNow = (today - start).TotalDays

Dim percentage = daysToNow / sumDays * 100

Console.WriteLine(percentage)

Console.ReadLine()

【讨论】:

  • 这不会执行整数除法吗? (它会在 C# 中)我会写 Dim percentage = CDbl(daysToNow) / sumDays * 100
  • TotalDays 是双倍的,我在 C# 中测试了这段代码,然后将其转换为 vb.net:-)
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 2023-03-09
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2011-06-01
  • 2021-01-10
相关资源
最近更新 更多