IfElseTryCatch
IfElseTryCatch

Reputation: 494

Using a DatePicker in Android dev: How do I compare the date picked to today's date?

I'm really stuck with a certain problem and I'm hoping someone can help me understand the problem and come to a solution. I've looked online a fair bit but can't see an answer unless it's been staring me in the face :-/

Basically, I'm creating a very basic TV Guide app. It parses data from an RSS feed which has days offset (yesterday was -1. today is 0, tomorrow is 1, etc etc) and I'm trying to implement a DatePicker that allows the user to see what is on a particular channel when they select yesterday, today, tomorrow, etc.. but if they pick a date that is out-with the range (at the moment it's a week in advance), a simple Toast message will be displayed.

My questions I guess are, firstly, how do I use maybe an IF ELSE to either parse the specific channel data for the day the user wants or display an error Toast message, and, how do I go about converting the days from what the user has put in compared to the actual date today into integers? If they select yesterday's date it will go to URL "http://example.com/-1/channel", if they select tomorrow's date it will go to URL "http://example.com/1/channel" etc etc etc.

Code is available if anyone needs to see it, but I think if someone would be kind enough to explain the logic, I'd like to see if I can come to the answer myself...

Thanks a lot folks!!

Upvotes: 0

Views: 1117

Answers (2)

David Manpearl
David Manpearl

Reputation: 12676

You should use a DatePicker to allow the user to choose the when.

Time in Android is stored on a long (not an int). And the long time can easily be converted back and forth between long (always milli-seconds) and a Date object.

The Date object gives you all sorts of tools to compare before and after, look at months, minutes, hours, etc.

The current time is determined by:

long nowMs = System.currentTimeMillis();
int nowSec = (int)(nowMs / 1000);

There is also a very important Calendar object. This allows you to parse textual date formats as delivered by your http functions in and out of various dates.

For example:

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss Z");
String text = sdf.format(cal.getTime();

You will have to put all these tools together with a DatePicker example such as the one here Create a DatePicker to complete your TV Guide application.

Reference:

Upvotes: 2

Parvaz Bhaskar
Parvaz Bhaskar

Reputation: 1367

EDIT : Check David's Answer its better.

First Filter the date selected with today's date. You can compare it by date.isbefore(date) or date.isafter(date) these booleans will let you tell know if a date is of past or future or present. then to further calculate the days inbetween you can make a method with switch statement that will basically convert the selected date and the current date into miliseconds(Date.getTimeinmiliseconds)

if the date is of past take the difference of present time in miliseconds and past date in miliseconds. If the date is of future do the opposite. Take the difference and convert it to days difference with appropriate sign(negative/positive).

Please refer this link for a better coding example

Upvotes: 0

Related Questions