【问题标题】:Find the day given date and number of days查找给定日期和天数的日期
【发布时间】:2018-12-05 19:54:15
【问题描述】:

我正在寻找一个功能,它可以帮助我在持续时间文本框中输入持续时间期间编号时自动检测到期日期。我遇到了挑战,因为所有月份都没有以相同的日期编号结束,即 31 作为一些在 30 结束。

注意:如果假设用户输入 3,则该函数应该能够自动计算到明年,而在 2018 年 11 月,这意味着持续时间将增加 2019 年 1 月 见下图

Dim start_date As Date = dtpStart.Value
Dim totalDays As Integer = 3 * 30
Dim ts As TimeSpan = start_date.Add(totalDays)
Dim end_date As Date = ts

我已经尝试了上述方法,但它给了我一个错误“整数类型的值无法转换为 system.TimeSpan。”

【问题讨论】:

  • 我尝试了以下方法,但它给了我一个错误“整数类型的值无法转换为 system.TimeSpan” Dim start_date As Date = dtpStart.Value Dim totalDays As Integer = 3 * 30 Dim ts As TimeSpan = start_date.Add(totalDays) Dim end_date As Date = ts
  • 请不要在 cmets 中发布多行代码。您应该发布您在问题中尝试过的代码,因此请编辑您的问题并添加格式正确的相关代码。
  • 也就是说,解决方案很简单,您应该自己找到它,因为您现在应该已经阅读了DateTime 类型的文档。您只需在包含您的开始日期的DateTime 上调用AddDays,它将返回另一个包含正确日期的DateTime
  • -1。一个简单的谷歌搜索解决了这个问题。而且官方文档也很简单:msdn.microsoft.com/en-us/library/system.datetime(v=vs.110).aspx
  • 我投票结束这个问题,因为它没有显示任何研究工作。

标签: vb.net


【解决方案1】:

如果我理解正确,如果用户输入 3,您希望从 start_date 30 天后提前 3 次。

Dim start_date = dtpStart.Value
Dim end_date = start_date.AddDays(3* 30)

就函数而言,您可以:

private function AddDays(Byval start_date as Date, Byval amount as integer) as Date
    Dim end_date = start_date.AddDays(amount)
    return end_date
end function

用法是:

Dim new_date = AddDays(dtpStart.Value, 3*30)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多