将日期(年月日)转换为天数
Convert date (year month day) to day count
我想要一个给定 3⍴⎕TS
的函数(使用公历规则) return 1+ 自 1 1 1 以来的天数。EG 如果函数被命名为 X
:
X¨ (1 1 1) (1 12 31) (2 12 31) (3 12 31) (4 12 31)
1 365 730 1095 1461
我需要这个,这样我就可以减去两个日期来计算它们之间的天数。
在 Dyalog APL, you can make use of the interpreter's built-in DateToIDN
and IDNToDate
methods to convert to and from an International Day Number 中,因此允许整数运算。
你可以方便的打包如下:
ToIDN ← {⊢ 2 ⎕NQ # 'DateToIDN' , ⍵}
ToDate ← {3 ⍴ 2 ⎕NQ # 'IDNToDate' , ⍵}
⊢
是为了反击⎕NQ
害羞,3⍴
是为了去掉工作日的数字,作为第4th元素.
您可以另外定义一个运算符,使您可以无缝地对日期进行运算:
Datewise ← {ToDate (ToIDN ⍺) ⍺⍺ ⍵}
最后,如果您没有使用 Dyalog APL,或者如果您对确定 IDN 的实际公式感兴趣,请查看 days and date functions from the dfns workspace。
请参阅以下示例 - 函数 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
我想要一个给定 3⍴⎕TS
的函数(使用公历规则) return 1+ 自 1 1 1 以来的天数。EG 如果函数被命名为 X
:
X¨ (1 1 1) (1 12 31) (2 12 31) (3 12 31) (4 12 31)
1 365 730 1095 1461
我需要这个,这样我就可以减去两个日期来计算它们之间的天数。
在 Dyalog APL, you can make use of the interpreter's built-in DateToIDN
and IDNToDate
methods to convert to and from an International Day Number 中,因此允许整数运算。
你可以方便的打包如下:
ToIDN ← {⊢ 2 ⎕NQ # 'DateToIDN' , ⍵}
ToDate ← {3 ⍴ 2 ⎕NQ # 'IDNToDate' , ⍵}
⊢
是为了反击⎕NQ
害羞,3⍴
是为了去掉工作日的数字,作为第4th元素.
您可以另外定义一个运算符,使您可以无缝地对日期进行运算:
Datewise ← {ToDate (ToIDN ⍺) ⍺⍺ ⍵}
最后,如果您没有使用 Dyalog APL,或者如果您对确定 IDN 的实际公式感兴趣,请查看 days and date functions from the dfns workspace。
请参阅以下示例 - 函数 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