将日期(年月日)转换为日期计数

时间:2017-07-31 01:39:43

标签: apl

我想要一个函数(使用公历规则)给定3⍴⎕TS将返回1 + 1天以来的天数.E1如果函数名为X

      X¨ (1 1 1) (1 12 31) (2 12 31) (3 12 31) (4 12 31)
1 365 730 1095 1461

我需要这个,所以我可以减去两个日期来查找它们之间的天数。

2 个答案:

答案 0 :(得分:2)

请参阅以下示例 - 函数X假定索引原点1如下:

r←X b  
r←(0 31 59 90 120 151 181 212 243 273 304 334)[b[2]]    
r←r+b[3]+(365×b[1]-1)+-/⌊(b[1]-3>b[2])÷4 100 400

答案 1 :(得分:1)

Dyalog APL中,您可以使用解释程序的内置DateToIDNIDNToDate方法转换为International Day Number和从Try it online!转换,从而允许整数数学运算。

您可以按照以下方式方便地打包它们:

ToIDN ← {⊢ 2 ⎕NQ # 'DateToIDN' , ⍵}
ToDate ← {3 ⍴ 2 ⎕NQ # 'IDNToDate' , ⍵}

Try it online!

是为了阻止⎕NQ害羞,3⍴是为了切断作为4 th 元素的工作日编号。

您还可以定义一个允许您无缝操作日期的运算符:

Datewise ← {ToDate (ToIDN ⍺) ⍺⍺ ⍵}

days

最后,如果您不使用Dyalog APL,或者如果您对确定IDN的实际公式感兴趣,请查看date中的the dfns workspacehttp://php.net/manual/en/class.reflectionobject.php函数