我正在寻找一个明确的标准(即经过认证是正确的或经过相当彻底的测试),用于在 Visual Basic 中计算某个日期的 ISO 周(即在 Visual Studio Express 2010 Visual Basic 项目中运行)
(不成功)到目前为止的研究:
DatePart Visual Basic 库函数可能有用:http://msdn.microsoft.com/en-us/library/20ee97hz(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/20ee97hz(v=vs.80).aspx - BUT显然有一个bug:“BUG:Format 或 DatePart 函数可能会返回一年中最后一个星期一的错误周数”:http://support.microsoft.com/kb/200299 http://support.microsoft.com/kb/200299(这个问题解决了吗?已经很老了,2004 年了?)
其他例程:http://forums.devx.com/showthread.php?t=130782 http://forums.devx.com/showthread.php?t=130782但没有说明它是如何基于ISO标准的
另外,在 Stack Overflow 上搜索得到的结果并不完全是我想要的:https://stackoverflow.com/search?q=iso+week https://stackoverflow.com/search?q=iso+week
谢谢@assylias - 这个问题的答案非常接近,如果不是我正在寻找的:https://stackoverflow.com/a/1226248/227926 https://stackoverflow.com/a/1226248/227926
请注意,要使用此解决方案,我应该补充一点,您需要导入 Calendar 抽象类定义:
Imports System.Globalization
然后实例化日历实例,我选择公历,因为它是事实上的标准,但还有其他(文化)选项:
Dim myCalendar As Calendar = New GregorianCalendar
然后,引用解决方案(https://stackoverflow.com/a/1226248/227926 https://stackoverflow.com/a/1226248/227926 ):
您可以使用 Calendar.GetWeekOfYear 方法获取周数
日期,并指定 CalendarWeekRule.FirstFourDayWeek 值
如何确定周数,以及 DayOfWeek.Monday 来指定
第一个工作日。这遵循 ISO 规范。
Example:
int week = myCalendar.GetWeekOfYear(DateTime.Today,
CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
我不会将我的问题标记为重复,因为他们的问题标题“根据 C# 中的周数和年份计算一周的开始和结束日期(基于 ISO 规范)”与我的问题明显不同,并且他们提到了 C#(不是 Visual Basic,尽管他们也需要 Visual Basic)。
保留我的问题应该有助于其他人寻找相同的问题。
Thanks!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)