转换日期(年月日)到天数
我想一个函数(使用公历规则)给出3⍴⎕TS
自1 1 1 EG将返回1+天数如果函数被命名为X
:转换日期(年月日)到天数
X¨ (1 1 1) (1 12 31) (2 12 31) (3 12 31) (4 12 31)
1 365 730 1095 1461
我需要这个,所以我可以减去两个日期来找到它们之间的天数。
请看下面的例子 - 函数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
完美的作品,是我所希望的......一个代码片段的答案,我可以剪切和粘贴。 –
虽然不是问题的一部分,但我注意到这个函数也提供了星期几。 7模数返回的收益率(0 = Sun,1 = Mon,...,6 = Sat)。 –
在Dyalog APL,您可以使用翻译的内置DateToIDN
和IDNToDate
方法,将并从International Day Number,从而允许整数数学。
可以方便地将它们打包如下:
ToIDN ← {⊢ 2 ⎕NQ # 'DateToIDN' , ⍵}
ToDate ← {3 ⍴ 2 ⎕NQ # 'IDNToDate' , ⍵}
的⊢
是对抗⎕NQ
害羞,并且3⍴
是砍掉被附加作为平日数4 th元件。
你还可以定义操作,它允许你约会无缝操作:最后
Datewise ← {ToDate (ToIDN ⍺) ⍺⍺ ⍵}
,如果你不使用Dyalog APL,或者如果你有兴趣在实际的公式要确定IDN,请查看the dfns workspace中的days和date函数。
@Adam谢谢!我编辑了我的问题以指定公历。我正在处理新创建的业务记录 - 当然没有接近100年的记录。只要初始日值不能为零(我将其保留为“空白”指标)。我只会减去这些值来确定它们之间的天数。 –