Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vb.net中通过知道星期和日期而不是日期来获取日期_Vb.net - Fatal编程技术网

在vb.net中通过知道星期和日期而不是日期来获取日期

在vb.net中通过知道星期和日期而不是日期来获取日期,vb.net,Vb.net,利用这些信息,我可以得到去年的某一周和该周的某一天,并使用日期 这是2010年10月4日,而不是2010年5月4日,2011年5月26日是2011年5月27日 Dim x As Date x = "5/26/2011" Dim whichweek As Double = x.DayOfYear / 7 Dim whichday As Integer = x.DayOfWeek 要在上一年的同一周中获得相同的工作日,可以使用以下方法: Public

利用这些信息,我可以得到去年的某一周和该周的某一天,并使用日期

这是2010年10月4日,而不是2010年5月4日,2011年5月26日是2011年5月27日

    Dim x As Date
    x = "5/26/2011"
    Dim whichweek As Double = x.DayOfYear / 7
    Dim whichday As Integer = x.DayOfWeek       

要在上一年的同一周中获得相同的工作日,可以使用以下方法:

 Public Shared Function GetWeekNumber(ByVal dtPassed As DateTime) As Integer
    Dim ciCurr As CultureInfo = CultureInfo.CurrentCulture
    Dim weekNum As Integer = ciCurr.Calendar.GetWeekOfYear(dtPassed, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
    Return weekNum
End Function

 Dim x As Date
    x = "4/04/2011"
    Dim whichweek As Integer = GetWeekNumber(x.Date)
    Dim whichday As Integer = x.DayOfWeek

    Dim offset As New TimeSpan(whichweek * 7 + whichday, 0, 0, 0)
    Dim sameWeekLastYear = New DateTime(x.Year - 1, 1, 1) + offset

    Label9.Text = sameWeekLastYear
(但正如汉斯在评论中所说,不幸的是,你对本周的计算是错误的。)

但是,不要使用字符串初始化日期。事实上,您的代码甚至不应该编译。您应该启用
选项Strict
,以使编译器更严格地检查错误

要从常量初始化日期,请使用日期文字语法:

Dim offset As New TimeSpan(whichweek * 7 + whichday, 0, 0, 0)
Dim sameWeekLastYear = New DateTime(x.Year - 1, 1, 1) + offset

或者,如果您确实需要读取字符串,因为您正在读取文件或获取用户输入,请使用
DateTime.Parse
方法正确解析字符串。

hmm我不想获得相同的日期,我想要的是获得相同的日期,例如,我想要一年中第30周的星期一,一年中第30周的星期一可能是2011年8月20日,也可能不是。去年可能是另一个不同的日期。仅供参考,我没有花时间弄清楚一年中实际的第30周是什么lol@MyHeadHurts啊,那就更有趣了。让我想想……哈哈,如果我只想知道日期,生活会很简单,程序员的生活从来都不容易,因为我对这一周的计算是错误的,我要改变什么只要你这样计算这一周,这就是1月1日加上的周*7+天-1。希望你不要这样计算一周,这是错误的。嗯,那么计算我应该在哪一周,哪一周*7+哪一天-1加在1月1日
Dim date = #5/26/2011#