Конвертировать время эпохи в дату и дату эпохи в Android - PullRequest
5 голосов
/ 20 июля 2011

StrDate = "2011-07-19T18: 23: 20 + 0000";

Как я могу получить время эпохи для указанного выше формата даты в Android

, также я хотел бызнать, как преобразовать время эпохи в вышеуказанный формат даты.

Буду признателен за прямой ответ с примером.

Ответы [ 3 ]

8 голосов
/ 17 декабря 2013

Пример кода с использованием Joda-Time 2.3.

Время Unix - это число секунд с начала 1970 года в UTC / GMT.

Как я могу получить время эпохи для вышеуказанного формата даты в Android

DateTime dateTimeInUtc = new DateTime( "2011-07-19T18:23:20+0000", DateTimeZone.UTC );
long secondsSinceUnixEpoch = ( dateTimeInUtc.getMillis() / 1000 ); // Convert milliseconds to seconds.

... и ...

как преобразовать время эпохи в вышеуказанный формат даты.

String dateTimeAsString = new DateTime( secondsSinceUnixEpoch * 1000, DateTimeZone.UTC ).toString();

Чтобы вывести эти значения в консоль…

System.out.println( "dateTimeInUtc: " + dateTimeInUtc );
System.out.println( "secondsSinceUnixEpoch: " + secondsSinceUnixEpoch );
System.out.println( "dateTimeAsString: " + dateTimeAsString );

Бонус: настройка на другой часовой пояс.

DateTime dateTimeMontréal = dateTimeInUtc.withZone( DateTimeZone.forID( "America/Montreal" ) );
6 голосов
/ 20 июля 2011

Вы должны использовать SimpleDateFormat .Этот класс поддерживает форматирование и синтаксический анализ.

Пример кода:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZZZZ");
Date gmt = formatter.parse("2011-07-19T18:23:20+0000");
long millisecondsSinceEpoch0 = gmt.getTime();
String asString = formatter.format(gmt);

Обратите внимание, что экземпляр Date в Java всегда представляет миллисекунды начиная с эпохи 0 в UTC / GMT, но этопечатается по местному времени при печати. ​​

1 голос
/ 29 июля 2014

Чтобы ответить на ваш вопрос немного поздно, но Joda-Time сможет справиться как просто, так и чисто.

Использование Joda-Time

1. Время до даты

Где дата - время вашей эпохи

DateTime dateTime = new DateTime(date*1000L);
System.out.println("Datetime ..." + dateTime);

Datetime from Epoch ...2014-08-01T13:00:00.000-04:00

2. Дата до эпохи

 DateTime fromDate = new DateTime("2011-07-19T18:23:20+0000");
 long epochTime =  fromDate.getMillis();
 System.out.println("Date is.." + fromDate + " epoch of date " + epochTime);

 Date is..2011-07-19T14:23:20.000-04:00 epoch of date 1311099800000
...