Recently, I needed to get current date and time in android. I found two ways of doing it. They are by using the Calendar class and SimpleDateFormat class. So let’s see what method will be more simple and useful for you.
A simple outline of this post:
1.0 Using the Calendar Class
2.0 Using the SimpleDateFormat Class
3.0 My Thoughts
4.0 Helpful Comments
1.0 Using the Calendar Class
Here’s how to get android date and time using the Calendar Class.
// using Calendar class Calendar ci = Calendar.getInstance(); String CiDateTime = "" + ci.get(Calendar.YEAR) + "-" + (ci.get(Calendar.MONTH) + 1) + "-" + ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR) + ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND);
The output of the code above is:
2011-6-9 7:0:56
2.0 Using the SimpleDateFormat Class
And here’s how to get it using SimpleDateFormat Class.
// SimpleDateFormat Class SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); String newtime = sdfDateTime.format(new Date(System.currentTimeMillis()));
SimpleDateFormat code output will be:
2011-06-09 19:00:56
3.0 My Thoughts
As you can see, using the calendar class seemed like it require us to code more. Also, I think I found a bug. My device calendar settings are correct. It is month of June, so ci.get(Calendar.MONTH) must return “6” but it returns “5” so I had to add “1” to make the output correct.
In my case, I used the SimpleDateFormat class since I don’t really have to synchronize it. It is easy to format – you can just use its time pattern strings (in our example “yyyy-MM-dd HH:mm:ss”).
But please be aware that it was said in the docs that SimpleDateFormat is NOT thread safe when it comes to Synchronization.
You should read more about the Android’s Calendar Class and SimpleDateFormat Class. Thanks for sharing your thoughts about getting the current date and time in Android!
4.0 Helpful Comments
I love reading useful comments and so we will highlight them by including it in our post. Thanks Kovica and Charuta!
According to Kovica:
You didn’t find any bugs, because if you look closely at the docs for the java.util.Calendar class, you’ll see that JANUARY = 0 http://developer.android.com/reference/java/util/Calendar.html#JANUARY), so JUNE = 5 http://developer.android.com/reference/java/util/Calendar.html#JUNE)
Charuta Said:
You could use the Time class, it’s a faster implementation of Calendar class. http://developer.android.com/reference/android/text/format/Time.html
How about you, do you have any other solution or thought about getting current date and time in Android? Drop it in the comments section below! Thanks!
12 responses to “Get Current Date and Time in Android using Two Classes”
Hi , how can i get the month in letters – like “June” not 5.
Thanks
Try “yyyy-MMM-dd HH:mm:ss” as its pattern string
You didn’t find any bugs, because if you look closely at the docs for the java.util.Calendar class, you’ll see that JANUARY = 0 (http://developer.android.com/reference/java/util/Calendar.html#JANUARY), so JUNE = 5 (http://developer.android.com/reference/java/util/Calendar.html#JUNE)
Oh now I see, thanks for your comment Kovica! :)
Android’s documentation is sometimes lacking. In this case the official Java-API is more precise as it states: “The first month of the year in the Gregorian and Julian calendars is JANUARY which is 0.”
Still, I agree with you that this is contrary to one’s expectation :-)
You should also have a look at Android’s DateFormat helper class which formats the Date according to the user’s language settings.
I think you’re right Wolfram, thanks for another resource!
You could use the Time class, it’s a faster implementation of Calendar class.
http://developer.android.com/reference/android/text/format/Time.html
@Charuta: Thanks for a giving another useful link! An instance of the Time class represents a moment in time, specified with second precision. :)
Is this really worth of a post? For heaven’s sake getting the time and date is something a real developer would be able to do in their sleep.
@Anonymous, maybe this post isn’t just for you. anyway thanks mike and others, i’m a beginner.
Hei this one actually returns the time its initialised…. Its not updated thereafter ,
Thanks for sharing this tutorial