Ответ 1
Посмотрите SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(new Date(myTimeAsLong));
Я задавал этот вопрос несколько раз, и ни один из ответов, похоже, не был тем, что мне нужно.
У меня есть длинная переменная типа, которая хранит в ней время эпохи.
Что я хочу сделать, это преобразовать его в строку
например, если время, на которое было сохранено время, было на сегодня, последняя строка будет читать:
17/03/2012
Как мне это сделать?
Посмотрите SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(new Date(myTimeAsLong));
Вы создали бы 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);
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
Если по времени эпохи вы имели в виду подсчет миллисекунд с первого момента 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. Но имейте в виду, что по крайней мере пара дюжин определений эпох используется различными компьютерными системами.
попробуйте это
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);
Вам нужно знать, что время epoch в java равно миллисекундам, а то, что вы конвертируете, может быть в секундах. Убедитесь, что обе стороны конверсий находятся в миллисекундах, а затем вы можете выбрать параметры даты из объекта Date.
Попробуйте это...
образец Временная метка 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
Счастливое кодирование
на основе предыдущих ответов, при прохождении системного значения по умолчанию 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));
}
Время для кого-то, чтобы дать современный ответ (действительный и рекомендуемый с 2014 года).
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
Обратите внимание, что во фрагменте можно указать часовой пояс, язык (локаль), а также длину или короткость нужного формата.
Утилита ArLiteDTMConv помогает конвертировать значения даты-времени EPOUCH-UNIX, формы EPOUCH-UNIX-To-Date-format и Vise-Versa. Вы можете установить результат в переменную, а затем использовать переменную в своем скрипте или при передаче в качестве параметра или ввести в любые критерии БД как для Window, так и для Linux. (Скачайте zip файл по этой ссылке)