2017-07-31 198 views
1

我想一個函數(使用公曆規則)給出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 

我需要這個,所以我可以減去兩個日期來找到它們之間的天數。

+0

@Adam謝謝!我編輯了我的問題以指定公曆。我正在處理新創建的業務記錄 - 當然沒有接近100年的記錄。只要初始日值不能爲零(我將其保留爲「空白」指標)。我只會減去這些值來確定它們之間的天數。 –

回答

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 
+0

完美的作品,是我所希望的......一個代碼片段的答案,我可以剪切和粘貼。 –

+0

雖然不是問題的一部分,但我注意到這個函數也提供了星期幾。 7模數返回的收益率(0 = Sun,1 = Mon,...,6 = Sat)。 –

1

Dyalog APL,您可以使用翻譯的內置DateToIDNIDNToDate方法,將並從International Day Number,從而允許整數數學。

可以方便地將它們打包如下:

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

Try it online!

是對抗⎕NQ害羞,並且3⍴是砍掉被附加作爲平日數4 th元件。

你還可以定義操作,它允許你約會無縫操作:最後

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

Try it online!

,如果你不使用Dyalog APL,或者如果你有興趣在實際的公式要確定IDN,請查看the dfns workspace中的daysdate函數。

相關問題