最近,我遇到了一个大问题,因为我有一个每周向客户付款的系统。

众所周知,一年有52周,并且有相应的标准。我正在使用PHP aka date('W')从日期中获取星期数,该日期根据标准ISO-8601进行计算。

以下是一些引用资料:

  • http://www.iso.org/iso/date_and_time_format
  • http://en.wikipedia.org/wiki/ISO_week_date

  • 但是,这是问题:2009年共有53周。看来,按照公历400年,有71年有53周。那是我不知道的一件事,也许很多人也不是。

    根据维基百科:



    并且PHP中的date函数完全尊重它。

    如果您查看MS Outlook,并在日历 View 中显示星期几,则它将显示52周
    考虑到2009年12月28日至2010年1月3日这一周。这是另一种标准吗?美国标准还是什么?

    如果是这样,那为什么PHP不支持它呢?有人做过支持此功能的功能吗?

    53周正确吗?我们有欧洲和美国客户。

    最佳答案

    我认为您不会在这里遇到任何问题。事实上,您正在遵循日期和时间格式和计数(ISO8601)的国际标准。如果您有任何提示的客户,只需引用他们的标准。

    Outlook的周编号在某些程度上等同于以下各项:

    $dummyWeek = floor((date('z') + (date('N') - 1)) / 7) + 1;
    

    出于计费目的,最好使用ISO8601作为标准。实际上,如果您查看您今年要补交的税款,它们将把上一个会计年度描述为53个星期。

    Outlook计数方式的问题在于,不能保证一周是7天。例如,OW01-2010仅受到2天的威胁:1月1日星期五,1月2日星期六。这是一个非常短的计费周期,为期一周。
    ISO8601周保证为7天,这就是为什么我们需要每4/5/6年有一个a周。

    您希望使用以下哪个选项:
  • ISO8601:偶尔有53周,但是每一个只有7天。
  • Outlook:一年中随机有52/53周,但每年必须为“半周”支付两次。
  • 关于php - ISO-8601周编号与PHP中的 "Outlook"编号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2202042/

    10-11 05:15
    查看更多