Droidman
Droidman

Reputation: 11608

android - generate random date and time

to trigger some future events I'm trying to create an algorithm which would do the following:

I have no clear ideas how to perform this. Any suggestions?

Upvotes: 3

Views: 8751

Answers (3)

Ram kiran Pachigolla
Ram kiran Pachigolla

Reputation: 21191

Exact Solution what you need..

public class RandomDateTime {

    public static void main(String[] args) {

        SimpleDateFormat dfDateTime  = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss",Locale.getDefault());
        int year = RandomDateTime.randBetween(1900, 2013);// Here you can set Range of years you need
        int month = RandomDateTime.randBetween(0, 11);
        int hour = RandomDateTime.randBetween(9, 22); //Hours will be displayed in between 9 to 22
        int min = RandomDateTime.randBetween(0, 59);
        int sec = RandomDateTime.randBetween(0, 59);


        GregorianCalendar gc = new GregorianCalendar(year, month, 1);
        int day = RandomDateTime.randBetween(1, gc.getActualMaximum(gc.DAY_OF_MONTH));

        gc.set(year, month, day, hour, min,sec);

        System.out.println(dfDateTime.format(gc.getTime()));

    }


    public static int randBetween(int start, int end) {
        return start + (int)Math.round(Math.random() * (end - start));
    }
}

You can find out more uses of SimpleDateTime at: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

Upvotes: 10

Aashish Bhatnagar
Aashish Bhatnagar

Reputation: 2605

what you can do is using the random function get the random timestamp, I mean you can get the random long value easily and then convert that timestamp to the date object like this

Java simple Timestamp to Date conversion

Upvotes: 2

Zielony
Zielony

Reputation: 16537

The idea is very simple. You can use Date(milis) constructor and random number generator, to generate random dates and times. You have to find lower and upper bound and randomly pick a number from between.

Formatting date and time is very simple and you can do this using DateFormat class.

Upvotes: 1

Related Questions