Android Получить текущую временную метку?

Я хочу получить текущую временную метку: 1320917972

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

Ответ 1

Решение:

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

Ответ 2

Из блога разработчиков:

System.currentTimeMillis() - это стандартные "стенные" часы (время и дата), выражающие миллисекунды с эпохи. Настенные часы могут быть установлены пользователем или телефонной сетью (см. setCurrentTimeMillis (long)), поэтому время может скачкообразно переходить назад или вперед. Эти часы следует использовать только тогда, когда важна переписка с реальными датами и временем, например, в приложении календаря или будильника. Измерения интервала или прошедшего времени должны использовать разные часы. Если вы используете System.currentTimeMillis(), попробуйте прослушать трансляции ACTION_TIME_TICK, ACTION_TIME_CHANGED и ACTION_TIMEZONE_CHANGED Intent, чтобы узнать, когда изменится время.

Ответ 3

1320917972 - это метка времени Unix, использующая количество секунд с 00:00:00 UTC 1 января 1970 года. Вы можете использовать класс TimeUnit для преобразования единиц - от System.currentTimeMillis() до секунд.

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

Ответ 4

Вы можете использовать класс SimpleDateFormat:

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

Ответ 5

Используйте метод ниже, чтобы получить текущую отметку времени. Это отлично работает для меня.

/**
 * 
 * @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;
    }
}

Ответ 6

Это простое использование:

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

если вы хотите его в определенном формате, тогда вам понадобится Formatter, как показано ниже

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

Ответ 7

Здесь можно прочитать метку времени, которая может быть использована для чтения в файле, на случай, если кому-то понадобится то, что мне нужно:

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;
    }

}

Ответ 8

Просто используйте

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

чтобы узнать текущее время в длинных миллис

Ответ 9

java.time

Я хотел бы внести современный ответ.

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

Вывод при запуске только сейчас:

1543320466

Хотя деление на 1000 не станет неожиданностью для многих, выполнение ваших собственных преобразований времени может быть затруднено для чтения довольно быстро, так что это плохая привычка, когда вы можете избежать этого.

Класс Instant, который я использую, является частью java.time, современного Java-API даты и времени. Он встроен в новые версии Android, API уровня 26 и выше. Если вы программируете для более старого Android, вы можете получить бэкпорт, см. ниже. Если вы не хотите этого делать, понятно, что я бы по-прежнему использовал встроенное преобразование:

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

Это так же, как ответ по sealskej. Вывод такой же, как и раньше.

Вопрос: Могу ли я использовать java.time на Android?

Да, java.time прекрасно работает на старых и новых устройствах Android. Для этого требуется как минимум Java 6.

  • В Java 8 и более поздних версиях, а также на более новых устройствах Android (с уровня API 26) встроен современный API.
  • В не-Android Java 6 и 7 получают ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310; см. ссылки внизу).
  • На (более старом) Android используйте Android-версию ThreeTen Backport. Его называют ThreeTenABP. И убедитесь, что вы импортировали классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

Ответ 10

Решение в Котлине:

val nowInEpoch = Instant.now().epochSecond

Убедитесь, что ваша минимальная версия SDK составляет 26.

Ответ 11

Я предлагаю использовать Hits-ответ, но добавив формат Locale, вот как Android  Разработчики рекомендует:

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;
    }

Ответ 12

Попробуйте это

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

и метка времени в формате времени

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