Reputation: 11608
to trigger some future events I'm trying to create an algorithm which would do the following:
yyyy-mm-dd
"hh:mm:ss
" Time should be (24h) between 9 and 22 hours2013-02-25 09:45:23
"I have no clear ideas how to perform this. Any suggestions?
Upvotes: 3
Views: 8751
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
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
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