I want to get the current UTC time in millis. I searched google and got some answers that System.currentTimeMillis() does returns UTC time. but it does not. If I do following:
long t1 = System.currentTimeMillis();
long t2 = new Date().getTime();
long t3 = Calendar.getInstance().getTimeInMillis();
all three times are almost same ( difference is in milli seconds due to calls ).
t1 = 1372060916
t2 = 1372060917
t3 = 1372060918
and this time is not the UTC time instead this is my timezone time. How can i get the current UTC time in android?
All three of the lines you've shown will give the number of milliseconds since the unix epoch, which is a fixed point in time, not affected by your local time zone.
You say "this time is not the UTC time" - I suspect you've actually diagnosed that incorrectly. I would suggest using epochconverter.com for this. For example, in your example:
1372060916 = Mon, 24 Jun 2013 08:01:56 GMT
We don't know when you generated that value, but unless it was actually at 8:01am UTC, it's a problem with your system clock.
Neither System.currentTimeMillis
nor the value within a Date
itself are affected by time zone. However, you should be aware that Date.toString()
does use the local time zone, which misleads many developers into thinking that a Date
is inherently associated with a time zone - it's not, it's just an instant in time, without an associated time zone or even calendar system.