2014-01-07 119 views
2

我試圖採取的開始日期和結束日期,並通過此日期範圍內進行迭代,並確定週末的數量/節假日呈現Lua的遍歷日期範圍

是否有可能建立一個包含日期表在這個範圍內?然後,我可以確定這張桌子裏的週末,並建立我的反擊。這是正確的方法還是有更簡單的方法來遍歷範圍?

function countWeekends(startDate, endDate) 

    dateRange = {} 
    for i = startDate, endDate 
    do dateRange[i] = {} 
+4

我想找一個專門的日期處理庫;這是一個非常平凡的主題,必須這樣對待。 –

+2

嘗試https://github.com/Tieske/date。 – lhf

回答

1

對於週末日的數量,只要您可以可靠地確定開始日的一週中的哪一天,計算就很簡單。既然你沒有問如何確定特定開始日期的星期幾,我會假設你已經有辦法做到這一點。如果你沒有,並且你找不到一個Lua庫,可以考慮找一個可靠的C或C++庫(比如boost :: date_time)並且導出它的一些函數(或者甚至只是你自己調用的一個函數這些庫,Lua不需要訪問除你的庫之外的庫)。

您還需要一種可靠的方法來確定哪些年份具有2月29日,但這又不是您的問題,所以如果您可以這樣做,您可以迭代,如果您的迭代跨越2月28日,您知道要添加那些年的某一天。

關於假期,這將是棘手,因爲許多是基於像「第十個月第二個星期五」的規則。 boost :: date_time lib可能可以處理其中的大部分,你也可以爲Lua創建一個C/C++ DLL擴展。

或者,完全繞過迭代並使用在線計算器(如http://www.timeanddate.com/date/workdays.html?y1=2014&m2=1&d2=7&y2=2014&m2=1&d2=7)來提交請求(您必須查找適當的Lua庫來執行此操作),或者查看在那裏使用的JavaScript並將其轉換爲Lua。