Gu.*_*u. 7 delphi monthcalendar
Delphi Xe,Win 7,系统TimeZone UTC + 4:0,系统中一周的第一天 - 星期一,时间与time.windows.com同步
在标准组件Delphi Win32的调色板中有组件MonthCalendar,其属性为WeekNubers = true(显示周数),date = now,第一天 - 星期一.
显示19号(今天) - 第43周的数字.
我通过dateutils.WeekOfTheYear(now)=请求号码返回42.

来源(0.5 Mb)http://www.sendspace.com/file/yuz6ko
通过组件MonthCalendar的初始代码判断 - 就像所有它都是真的(即使不暴露一周的第一天,它从系统参数中获取值).
并在询问WeekOfTheYear它被告知,所有被认为也适用标准ISO,但数字不重合:(
无论如何,我不明白,一周消失 - 如果要查看日历,应该是43,如果考虑,那个星期53和去年的第一个问题......
顺便说一下,2011年1月1日的WeekOfTheYear也会回来52但是应该返回1 ...
为什么区别和哪里是正确的?
RRU*_*RUZ 11
两种结果都是正确的,不同之处在于该DateUtils.WeekOfTheYear函数使用了一周的ISO 8601标准定义.That is, a week is considered to start on a Monday and end on a Sunday.
请查看有关ISO 8601格式的周数的说明.
如果1月1日是星期一,星期二,星期三或星期四,则是01周.如果1月1日是星期五,星期六或星期日,则是上一年的第52周或第53周(没有第00周) .12月28日总是在同一年的最后一周.
此功能的Embarcadero在线帮助DateUtils.WeekOfTheYear说
....如果一年中的第一个日历日是星期五,星期六或星期日,那么对于日历年的前三天,两天或一天,WeekOfTheYear将返回上一年的最后一周.类似地,如果一年中的最后一个日历日是星期一,星期二或星期三,那么对于日历年的最后一天,两天或三天,WeekOfTheYear返回1(下一个日历年的第一周).
因此,01-01-2011本周六是本周被认为是上一年的第52周.
这也解释了为什么今天(19-10-2011)返回的周数是42而不是43.
| 归档时间: |
|
| 查看次数: |
12439 次 |
| 最近记录: |