Par*_*oft 8 php format numbers
我最近遇到了一个大问题,因为我有一个每周向客户付款的系统.
众所周知,一年有52周,并且有标准.我正在使用PHP aka date('W')来获取日期的周数,根据标准ISO-8601计算.
以下是一些参考:
但这是问题:2009年有53周.似乎通过公历在400年内有71年有53周.这是我不知道的一件事,可能很多人并不是这样.
根据维基百科:
2009-12-31是2009-W53-4(ISO年份2009年有53周,延长了2009年的格里高利年,周四开始和结束,两天结束,为期三天).
PHP中的日期函数完全尊重它.
如果您查看MS Outlook,并在日历视图中显示星期几,它将在2009年12月28日至2010年1月3日第1周出现52周.这是另一个标准吗?美国标准还是什么?
如果是这样,那为什么PHP不能支持它呢?有人做过支持这个的功能吗?
53周是否正确?我们有欧洲和美国的客户.
Outlook不遵循任何类型的周编号标准.它有两个设置来确定周编号,称为"一周的第一天"和"一年中的第一周".
通过将"周的第一天"设置为星期一和"一年的第一周"设置为"第一个4天的周",可以模拟ISO标准.
每个用户都必须进行此调整以遵循ISO标准.
我知道没有单独的美国标准,显然,Outlook也没有.
我认为你在这里不会有问题。事实上,您正在遵循日期和时间格式和计数的国际标准 ( ISO8601)。如果您有任何客户抱怨,只需让他们参考该标准即可。
Outlook 的周编号有点类似于以下内容:
$dummyWeek = floor((date('z') + (date('N') - 1)) / 7) + 1;
Run Code Online (Sandbox Code Playgroud)
出于计费目的,您最好使用ISO8601作为标准。事实上,如果您查看今年要填写的税款,他们会将上一财年描述为 53 周。
Outlook 计数方式的问题在于,一周不能保证为 7 天。例如,OW01-2010 仅包含 2 天:1 月 1 日星期五,1 月 2 日星期六。对于一周来说,这是一个非常短的计费周期。
ISO8601周保证为 7 天,这就是为什么我们每 4/5/6 年需要一个闰周。
您更喜欢以下选项中的哪一个:
ISO8601:偶尔有 53 周,但每周都有 7 天长。Outlook:一年中随机有 52/53 周,但每年必须为“半周”支付两次费用。