Android Get Current timestamp?

JavaAndroidKotlinTimestampEpoch

Java Problem Overview


I want to get the current timestamp like that : 1320917972

int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts =  tsTemp.toString();

Java Solutions


Solution 1 - Java

The solution is :

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();

Solution 2 - Java

From developers blog:

System.currentTimeMillis() is the standard "wall" clock (time and date) expressing milliseconds since the epoch. The wall clock can be set by the user or the phone network (see setCurrentTimeMillis(long)), so the time may jump backwards or forwards unpredictably. This clock should only be used when correspondence with real-world dates and times is important, such as in a calendar or alarm clock application. Interval or elapsed time measurements should use a different clock. If you are using System.currentTimeMillis(), consider listening to the ACTION_TIME_TICK, ACTION_TIME_CHANGED and ACTION_TIMEZONE_CHANGED Intent broadcasts to find out when the time changes.

Solution 3 - Java

1320917972 is Unix timestamp using number of seconds since 00:00:00 UTC on January 1, 1970. You can use TimeUnit class for unit conversion - from System.currentTimeMillis() to seconds.

String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));

Solution 4 - Java

You can use the SimpleDateFormat class:

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());

Solution 5 - Java

Use below method to get current time stamp. It works fine for me.

/**
 * 
 * @return yyyy-MM-dd HH:mm:ss formate date as string
 */
public static String getCurrentTimeStamp(){
	try {

		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String currentDateTime = dateFormat.format(new Date()); // Find todays date

		return currentDateTime;
	} catch (Exception e) {
		e.printStackTrace();

		return null;
	}
}

Solution 6 - Java

It's simple use:

long millis = new Date().getTime();

if you want it in particular format then you need Formatter like below

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString  = dateFormat.format(new Date());

Solution 7 - Java

You can get Current timestamp in Android by trying below code

time.setText(String.valueOf(System.currentTimeMillis()));

and timeStamp to time format

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);

Solution 8 - Java

Here's a human-readable time stamp that may be used in a file name, just in case someone needs the same thing that I needed:

package com.example.xyz;

import android.text.format.Time;

/**
 * Clock utility.
 */
public class Clock {

	/**
	 * Get current time in human-readable form.
	 * @return current time as a string.
	 */
	public static String getNow() {
		Time now = new Time();
		now.setToNow();
		String sTime = now.format("%Y_%m_%d %T");
		return sTime;
	}
	/**
	 * Get current time in human-readable form without spaces and special characters.
	 * The returned value may be used to compose a file name.
	 * @return current time as a string.
	 */
	public static String getTimeStamp() {
		Time now = new Time();
		now.setToNow();
		String sTime = now.format("%Y_%m_%d_%H_%M_%S");
		return sTime;
	}

}

Solution 9 - Java

Solution in Kotlin:

val nowInEpoch = Instant.now().epochSecond

Make sure your minimum SDK version is 26.

Solution 10 - Java

Here is the comparison list of the most widely known methods enter image description here

Solution 11 - Java

java.time

I should like to contribute the modern answer.

	String ts = String.valueOf(Instant.now().getEpochSecond());
	System.out.println(ts);

Output when running just now:

> 1543320466

While division by 1000 won’t come as a surprise to many, doing your own time conversions can get hard to read pretty fast, so it’s a bad habit to get into when you can avoid it.

The Instant class that I am using is part of java.time, the modern Java date and time API. It’s built-in on new Android versions, API level 26 and up. If you are programming for older Android, you may get the backport, see below. If you don’t want to do that, understandably, I’d still use a built-in conversion:

	String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
	System.out.println(ts);

This is the same as the answer by sealskej. Output is the same as before.

Question: Can I use java.time on Android?

Yes, java.time works nicely on older and newer Android devices. It just requires at least Java 6.

  • In Java 8 and later and on newer Android devices (from API level 26) the modern API comes built-in.
  • In non-Android Java 6 and 7 get the ThreeTen Backport, the backport of the new classes (ThreeTen for JSR 310; see the links at the bottom).
  • On (older) Android use the Android edition of ThreeTen Backport. It’s called ThreeTenABP. And make sure you import the date and time classes from org.threeten.bp with subpackages.

Solution 12 - Java

I suggest using Hits's answer, but adding a Locale format, this is how Android Developers recommends:

try {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
        return dateFormat.format(new Date()); // Find todays date
    } catch (Exception e) {
        e.printStackTrace();

        return null;
    }

Solution 13 - Java

This code is Kotlin version. I have another idea to add a random shuffle integer in last digit for giving variance epoch time.

Kotlin version

val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance

val deltaEpoch = oldEpoch - currentEpoch

I think it will be better using this kode then depend on android version 26 or more

Solution 14 - Java

Here is another solution, this is in kotlin:

val df: DateFormat = SimpleDateFormat("yyyy.MM.dd HH:mm:ss")
val timeStamp = df.format(Calendar.getInstance().time)

Output example:

> "2022.04.22 10:22:35"

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRjaibi MejdiView Question on Stackoverflow
Solution 1 - JavaRjaibi MejdiView Answer on Stackoverflow
Solution 2 - JavadrooooooidView Answer on Stackoverflow
Solution 3 - JavasealskejView Answer on Stackoverflow
Solution 4 - JavaPratik ButaniView Answer on Stackoverflow
Solution 5 - JavaHitsView Answer on Stackoverflow
Solution 6 - JavaPranavView Answer on Stackoverflow
Solution 7 - JavaMujahid KhanView Answer on Stackoverflow
Solution 8 - Java18446744073709551615View Answer on Stackoverflow
Solution 9 - JavaDSaviView Answer on Stackoverflow
Solution 10 - JavaucMediaView Answer on Stackoverflow
Solution 11 - JavaOle V.V.View Answer on Stackoverflow
Solution 12 - JavaFaustino GagnetenView Answer on Stackoverflow
Solution 13 - JavaSubhanshujaView Answer on Stackoverflow
Solution 14 - JavaNotronView Answer on Stackoverflow