如何獲得本週的第一天和最後一天?我需要的是用NSDate屬性過濾一組對象的方式,只留下當前一週出現的對象,然後按天篩選它們。另外我需要一些方法來獲取本地化的日期名稱。獲取當週的第一天和最後一天
我試着玩NSCalendar,NSDate和NSDateComponents,但似乎我不能只檢查日曆的第一個週日,因爲可能會有前幾個月/下個月的幾個星期。
如何獲得本週的第一天和最後一天?我需要的是用NSDate屬性過濾一組對象的方式,只留下當前一週出現的對象,然後按天篩選它們。另外我需要一些方法來獲取本地化的日期名稱。獲取當週的第一天和最後一天
我試着玩NSCalendar,NSDate和NSDateComponents,但似乎我不能只檢查日曆的第一個週日,因爲可能會有前幾個月/下個月的幾個星期。
好吧,這裏有雲,一個python片段,沒有工作
def daySec(diff):
return 60*60*24*diff
def weekDays(dt=None):
if not dt:
dt = NSDate.date() # use today
cal = NSCalendar.currentCalendar()
dc = cal.components_fromDate_(NSWeekdayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit, dt)
normDt = cal.dateFromComponents_(dc) # get the day-rounded date
shift = dc.weekday() - cal.firstWeekday()
firstDt = normDt.dateByAddingTimeInterval_(daySec(-shift))
lastDt = normDt.dateByAddingTimeInterval_(daySec(-shift+7)) # up to next week's first day midnight
return (firstDt, lastDt)
使用NSDateComponents拿到平日,這是從1日到7
一旦你的工作日數,計算它的區別,你的一週的第一天。例如,如果你認爲星期一(2)是第一天,那麼它會(或將是)多少天。如果工作日是4(星期三),則差值爲2.這意味着如果從原始日期減去兩天,您將獲得它所在的一週的第一天。
檢查documentation for details,因爲您需要處理這些對象還包含時間屬性的事實。如果可以,請確保時間值始終爲零,而您只對日期和日期比較感興趣。
我怎樣才能從中獲得的NSDate?更確切地說,除了工作日之外,我還需要填寫哪些NSDateComponents字段,以便讓NSCalendar將其轉換爲第一個星期的NSDate? – Farcaller 2009-10-26 14:28:44
在我的答案的文檔鏈接處選中「日曆,日期組件和日曆單位」。這很明顯。 – 2009-10-26 19:22:28
那是使用PyObjC嗎? http://pyobjc.sourceforge.net/ – 2009-10-26 19:23:39
是的,它可以快速解決這些問題。使用ipython作爲shell,您可以快速獲得結果,並且不需要反覆寫入編譯運行循環。 – Farcaller 2009-10-26 20:54:11
NSDateComponents方法將正確處理沒有60 * 60 * 24秒的日期。 – 2010-04-24 22:47:32