ТЛ; др
Согласно этому ответу , здесь приведен JavaScript для анализа количества миллисекунд, начиная с ссылки эпохи 1970-01-01T00: 00Z.
var date = new Date( millisecondsSinceEpochReference );
Дополнительные предложения
В дополнение к коду JavaScript я могу предложить несколько основных предложений: Java-сервлеты, java.time классы и форматы ISO 8601.
Java Servlet
Нет необходимости заново изобретать веб-сервер. Java Servlet Технология была изобретена, чтобы сделать этот вид работы очень простым.
Напишите простое приложение сервлета, которое возвращает желаемую строку. Занимает всего несколько строк кода.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet ( "/now" )
public class NowServlet extends HttpServlet {
public void doGet ( HttpServletRequest req , HttpServletResponse res )
throws ServletException, IOException {
res.setContentType( "text/plain" );
PrintWriter out = res.getWriter();
Instant instant = Instant.now();
String output = instant.toString();
out.println( output );
}
}
Затем запустите ваш сервлет на любом сервлет-совместимом сервере ( веб-контейнер ), например Apache Tomcat или Eclipse Jetty .
Если хотите, вы можете сделать это, сделав RESTful веб-сервис.
java.time
Ваш бэкэнд Java использует ужасные старые классы даты и времени, которые были вытеснены годами назад современными java.time классами.
Если вы настаиваете на отслеживании момента как отсчета из ссылки эпохи , здесь приведен код для получения отсчета миллисекунд с 1970-01-01T00: 00Z .
Instant.now().toEpochMilli()
Но я предлагаю вам обменяться текстом, а не этим простым целым числом. Продолжайте читать.
ISO 8601
При обмене значениями даты и времени в виде текста используйте стандартное форматирование ISO 8601 . Эти форматы практичны и полезны, они разработаны для того, чтобы избежать двусмысленности, и их легко разбирать на машине, а также легко читать людям в разных культурах.
Классы java.time по умолчанию используют эти стандартные форматы при разборе / генерации строк. Поэтому не нужно указывать шаблон форматирования.
Для значения в UTC используйте Instant
class.
String output = Instant.now().toString() ;
2018-11-13T02: 16: 19.422836Z
Вы можете разобрать такую строку обратно в объект.
Instant instant = Instant.parse( "2018-11-13T02:16:19.422836Z" ) ;
Если пункт назначения ограничен миллисекундами вместо java.time разрешение наносекунд , усечь.
String output =
Instant
.now()
.truncatedTo( ChronoUnit.MILLIS )
.toString()
;
2018-11-13T02: 18: 05.333Z
Вы можете хотите обменять значение, как видно на настенном времени, используемом людьми определенного региона ( часовой пояс ). Но, вообще говоря, лучшая практика - обмениваться моментами в UTC .
Для часового пояса используйте класс ZonedDateTime
. Метод toString
этого класса разумно расширяет стандарт ISO 8601 , добавляя название часового пояса в квадратных скобках.
String output =
ZonedDateTime // Represent a moment as seen through the wall-clock time used by the people of a particular region (a time zone).
.now( // Capture the current moment.
ZoneId.of( "America/Montreal" ) // Always specify proper zone name in `Continent/Region` format, never 2-4 letter pseudo-zones such as PST, EST, CEST, or IST.
) // Returns a `ZonedDateTime` object.
.toString() // Generates text in ISO 8601 format extended to append the name of zone in square brackets.
2018-11-12T21: 27: 54.595139-05: 00 [Америка / Монреаль]
Вы можете разобрать такую строку обратно в объект.
ZonedDateTime zdt = ZonedDateTime.parse( "2018-11-12T21:27:54.595139-05:00[America/Montreal]" ) ;
При необходимости обрежьте, как показано выше.
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .