Check if the current date string is within or outside the range of two other dates

我与影子孤独终老i 提交于 2019-12-12 01:55:40

问题


I have 2 date pickers. One is for selecting a start date and the other is for selecting an expiry date. When a selection has been made I convert the date to string format and store the results in a two text fields.

This is how I save to the database:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMMM d" // e.g. September 15
let sDate = dateFormatter.dateFromString(startDateField.text) as NSDate! 
let eDate = dateFormatter.dateFromString(expiryDateField.text) as NSDate!

activity["startDate"] = sDate
activity["expiryDate"] = eDate

activity.saveInBackgroundWithBlock({ (success: Bool, error: NSError!) -> Void in

What I intend to do is have a table view display 2 sections: one showing activities that are active, and the other showing activities that are expired/not in date range.

I figured I could do this by taking the current date and checking it was within the start date and expiry date range.

My saved date from above is showing up in parse like this:

The thing is, I don't want to take the year or time into account. The only thing that matters is the month and day. So for example an activity could run once a year between September 15th and December 20th.

I need a way to check that the current date is within those two dates taking the day (e.g. 15th) of the month into account. So today's date is October 19 and an activity would be in range if its start date was September 15 and its expiry date December 20, but would be out of range/operation if the expiry date was October 18 or start date was October 25.

So to summarise:

I will be displaying two sections in a table view. One with active activities and another with non-active out of operation activities.

  1. How do take my stored start date and expiry date and easily check the current date is within their range?

  2. For the occasions when users pick either a start date or expiry date I need to check if the current date is greater/less than the start date (to be able to decide if the activity should show up or not) or if the current date is greater/less than the expiry date (to be able to decide if the activity has passed or not passed its expiry date.

It would be nice if I could roll 1 and 2 into one function and use it in the table view.

Would be interested to learn how the more experienced programmer would achieve this.


回答1:


Instead of the date format "MMMM d" (e.g. "September 15"), you can convert the dates to a string with the date format "MMdd" (e.g. "0915"). Then you can do a simple string comparison between the current date, the start date and the expiry date.

For example,

"0915" < "1019" < "1220"

so October 19 is in the range from September 15 to December 20.



来源:https://stackoverflow.com/questions/26451223/check-if-the-current-date-string-is-within-or-outside-the-range-of-two-other-dat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!