【问题标题】:Convert day, week number, and year to Date in VB在VB中将日、周数和年转换为日期
【发布时间】:2018-06-04 18:08:31
【问题描述】:

我需要帮助来转换年份、周数和日期。因此,如果 date1 是 1990,wN 是 12,dDay 是 3,则结果应该是 3/21/1990(mm/dd/yyyy 格式)。

我在为这一行找到正确的格式时遇到问题:Output(Date(date1, 1, 1) + ((wN - 1) * 7) - Weekday(Date(date1, 1, 1) + (wN - 1) * 7, 2) + 1 + (dDay - 1))

此代码在 Excel 中运行良好。我正在尝试将其转换为在 vb.net 中工作

    Dim str1 As String = txtInput1.Text
    Dim d2 As String
    Dim date1 As Integer
    Dim date2 As Integer
    Dim wN As Integer
    Dim dDay As Integer

    Dim cYear As Integer = DateTime.Now.Year

    txtOutput.Text = ""

    d2 = Mid(str1, 2, 1)
    wN = Mid(str1, 3, 2)
    dDay = Mid(str1, 5, 1)

    If d2 = "G" Then
        date1 = 1990
        date2 = 2013
        If date2 <= cYear Then
            'Output("Year Built " & date1 & " or " & date2 & vbCrLf & "Week " & wN & vbCrLf & "Day " & dDay)
            Output(Date(date1, 1, 1) + ((wN - 1) * 7) - Weekday(Date(date1, 1, 1) + (wN - 1) * 7, 2) + 1 + (dDay - 1))
        Else
            Output("Year Built " & date1)
        End If

【问题讨论】:

标签: vb.net


【解决方案1】:

你的公式有点不对劲。从年初开始,加上天数。

    Const DAYS_IN_A_WEEK As Integer = 7

    Dim year As Integer = 1990
    Dim weekNumber As Integer = 12
    Dim dayOfWeek As Integer = 3

    Dim calculatedDate = New DateTime(year, 1, 1)
    calculatedDate = calculatedDate.AddDays((weekNumber - 1) * DAYS_IN_A_WEEK + (dayOfWeek - 1) - (CInt(calculatedDate.DayOfWeek) - 1))

【讨论】:

  • 我需要更具体一些。该公式需要包含以星期一为一周的第一天的工作日函数。因此,如果 2013 年和星期和日期相同,则等于 = 2013 年 4 月 9 日。以上返回 2013 年的第 10 位。
  • @VBANewbie 我添加了星期几
猜你喜欢
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 2021-09-18
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多