Преобразование эпохи к текущей строке

Я задавал этот вопрос несколько раз, и ни один из ответов, похоже, не был тем, что мне нужно.

У меня есть длинная переменная типа, которая хранит в ней время эпохи.

Что я хочу сделать, это преобразовать его в строку

например, если время, на которое было сохранено время, было на сегодня, последняя строка будет читать:

17/03/2012

Как мне это сделать?

Ответы

Ответ 1

Посмотрите SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(new Date(myTimeAsLong));

Ответ 2

Вы создали бы Date из long - это легко:

Date date = new Date(epochTime);

Обратите внимание, что epochTime здесь должно быть в миллисекундах с эпохи - если у вас есть секунды с эпохи, умножьте на 1000.

Затем вы должны создать SimpleDateFormat с указанием соответствующего шаблона, культуры и часового пояса. Например:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
format.setTimeZone(...);

Затем используйте это для форматирования даты в строке:

String text = format.format(date);

Ответ 3

Date date = new Date(String); 

это устарело.

решение

  Date date = new Date(1406178443 * 1000L);
  DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
  format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
  String formatted = format.format(date);

убедитесь, что умножить на 1000L

Ответ 4

Joda времени

Если по времени эпохи вы имели в виду подсчет миллисекунд с первого момента 1970 года в UTC, вот пример кода с использованием библиотеки Joda-Time...

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime = new DateTime( yourMilliseconds, timeZone );
String output = DateTimeFormat.forStyle( "S-" ).withLocale( Locale.CANADA_FRENCH ).print( dateTime );

Другие эпохи

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

Ответ 5

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

Date date = new Date(1476126532838L);
DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String formatted = format.format(date);
format.setTimeZone(TimeZone.getTimeZone("Asia/Colombo"));//your zone
formatted = format.format(date);
System.out.println(formatted);

Ответ 6

Вам нужно знать, что время epoch в java равно миллисекундам, а то, что вы конвертируете, может быть в секундах. Убедитесь, что обе стороны конверсий находятся в миллисекундах, а затем вы можете выбрать параметры даты из объекта Date.

Ответ 7

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

образец Временная метка Epoch - 1414492391238

Метод:

public static String GetHumanReadableDate(long epochSec, String dateFormatStr) {
    Date date = new Date(epochSec * 1000);
    SimpleDateFormat format = new SimpleDateFormat(dateFormatStr,
            Locale.getDefault());
    return format.format(date);
}

Юзабилити:

long timestamp = Long.parseLong(engTime) / 1000;
String engTime_ = GetHumanReadableDate(timestamp, "dd-MM-yyyy HH:mm:ss aa");

Результат:

28-10-2014 16:03:11 pm

Счастливое кодирование

Ответ 8

на основе предыдущих ответов, при прохождении системного значения по умолчанию Locale и TimeZone...

String epochToIso8601(long time) {
    String format = "yyyy-MM-dd HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
    sdf.setTimeZone(TimeZone.getDefault());
    return sdf.format(new Date(time * 1000));
}

Ответ 9

Время для кого-то, чтобы дать современный ответ (действительный и рекомендуемый с 2014 года).

java.time

    DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedDateTime(FormatStyle.LONG).withLocale(Locale.US);

    String facebookTime = "1548410106047";
    long fbt = Long.parseLong(facebookTime);
    ZonedDateTime dateTime = Instant.ofEpochMilli(fbt).atZone(ZoneId.of("America/Indiana/Knox"));
    System.out.println(dateTime.format(formatter));

Выход:

25 января 2019 года в 3:55:06 CST

Если вам нужна только дата и в более коротком формате, используйте, например,

    DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.US);

1/25/19

Обратите внимание, что во фрагменте можно указать часовой пояс, язык (локаль), а также длину или короткость нужного формата.

связи

Ответ 10

Утилита ArLiteDTMConv помогает конвертировать значения даты-времени EPOUCH-UNIX, формы EPOUCH-UNIX-To-Date-format и Vise-Versa. Вы можете установить результат в переменную, а затем использовать переменную в своем скрипте или при передаче в качестве параметра или ввести в любые критерии БД как для Window, так и для Linux. (Скачайте zip файл по этой ссылке)