-4

好吧,我正在制作一个程序,要求用户输入年份(例如 2002 年)并返回该年的第一个星期二。

我什至不知道如何开始。任何人都可以帮忙吗?

4

3 回答 3

2

我什至不知道如何开始。

你是在思考如何解决这个问题,一开始甚至没有考虑代码。您可以考虑一些不同的方法:

  • 遍历一年中的日子(从 1 月 1 日开始),直到找到星期四
  • 获取当年 1 月 1 日的日期。检查它是星期几。添加一周中的这一天和星期四之间的天数。

现在关于编码部分: DateTime结构用于表示 .NET 中的日期。构造函数可用于为特定的日、月和年创建日期。如果您查看 的文档DateTime,您会发现DayOfWeek方法对您有帮助。

我希望这能让你开始!

编辑:

要将用户输入(字符串)转换为整数,请使用Parse函数。

于 2013-02-15T20:23:03.077 回答
1
Public Function GetFirstTuesday(year As Integer) As Date
    Dim d As Date = New Date(year, 1, 1, 0, 0)
    For i As Integer = 0 To 6
        If d.AddDays(i).DayOfWeek = DayOfWeek.Tuesday) Then
            Return d.AddDays(i)
        End If
    Next
End Function
于 2013-02-15T20:02:46.553 回答
0

我尝试使用 Linq 解决它(我是 linq 初学者)。错误处理取决于您。

Sub Main()
    Console.WriteLine(GetFirstTuesdayOfYear(2013)) 'returns 01.01.2013
    Console.WriteLine(GetFirstTuesdayOfYear(2012)) 'returns 03.01.2012
    Console.WriteLine(GetFirstTuesdayOfYear(2011)) 'returns 04.01.2011
    Console.WriteLine(GetFirstTuesdayOfYear(2010)) 'returns 05.01.2010
    Console.WriteLine(GetFirstTuesdayOfYear(2009)) 'returns 06.01.2009
    Console.Read()
End Sub

Private Function GetFirstTuesdayOfYear(year As Integer) As DateTime
    Return Enumerable.Range(1, DateTime.DaysInMonth(Year, 1)).[Select](Function(day) New DateTime(Year, 1, day)).ToList().FirstOrDefault(Function(x) x.DayOfWeek = DayOfWeek.Tuesday)
End Function
于 2013-02-15T20:23:04.950 回答