56

I have to an android application in which I need to convert the current date to the number of seconds passed since 1970.

What I am doing currently is this.

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
cal.set(currentDate.get(Calendar.YEAR), month, currentDate.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
long timesince1970 = cal.getTime().getTime();

Another problem is that my application needs to run in Germany. Hence the need to convert the time to their time zone and then convert it to the number of seconds since 1970.

The above is not giving me correct results.

ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96
user590849
  • 11,655
  • 27
  • 84
  • 125

2 Answers2

133

System.currentTimeMillis() gives you the number of milliseconds since the Unix epoch (January 1, 1970 00:00:00 UTC).

Divide it by 1000 to get the number of seconds.

Martin Thurau
  • 7,564
  • 7
  • 43
  • 80
Jean Hominal
  • 16,518
  • 5
  • 56
  • 90
  • Since it comes from `System` do `currentTimeMillis()` vary if a user has the date changed? – Cliff Burton Jul 07 '16 at 10:59
  • 3
    @CliffBurton: Yes, it does. Android phones are usually set up to automatically sync their time, but the returned date can be wrong. If you need the time to be exact, you will usually need to make some kind of online check. (N.B.: as the returned time is UTC, it is not affected by DST or timezones, unless a mistake is made) – Jean Hominal Jul 07 '16 at 15:36
16
//long currentTimeMillis ()-Returns the current time in milliseconds. 
long millis = System.currentTimeMillis();

//Divide millis by 1000 to get the number of seconds.
long seconds = millis / 1000;
Fakhriddin Abdullaev
  • 4,169
  • 2
  • 35
  • 37