Как получить текущее серверное время в Java?
Как я могу получить текущее время сервера в Java? Я пытался System.currentTimeMills(), но он возвращает мне время клиента, а не серверное время. Я хочу получить время "сервера" в миллисекундах.
Пожалуйста, не закрывайте этот вопрос. Я искал в сети, но ничего не нашел. Весь код возвращает значение из 1970. Я хочу, например: текущее время сервера 9/25/2012:10:19AM в миллисекундах.
Также я искал другие вопросы, и это не дубликат других вопросов.
4 ответов:
System.currentTimeMillis()возвращает количество миллисекунд с 1970 года.Если вы запустите его на сервере, вы получите серверное время. Если вы запускаете его на клиенте (например, апплет, автономное настольное приложение и т. д.) вы получите время клиента. Чтобы получить дату сервера на клиенте, настройте вызов, который возвращает клиенту время сервера в отформатированной строке.
Если вы хотите, чтобы дата была отформатирована определенным образом, сначала создайте объектDate(), а затем отформатируйте его с помощьюSimpleDateFormatDate d1 = new Date(); SimpleDateFormat df = new SimpleDateFormat("MM/dd/YYYY HH:mm a"); String formattedDate = df.format(d1);
Если вы хотите, чтобы ваш клиент получил время сервера, вам придется сделать запрос на сервер и заставить сервер отправить назад свое текущее время в ответе.
Если вы хотите вернуть клиенту текущее время (System.currentTimeMillis ()) со стороны сервера в миллисекундах, вам нужно использовать часовой пояс сервера при форматировании / преобразовании значения.
СЕРВЕРНАЯ ПРОГРАММА
import java.io.*; import java.net.*; import java.util.*; class dateserver { public static void main(String args[]) { ServerSocket ss; Socket s; PrintStream ps; DataInputStream dis; String inet; try { ss=new ServerSocket(8020); while(true) { s=ss.accept(); ps=new PrintStream(s.getOutputStream()); Date d=new Date(); ps.println(d); ps.close(); } } catch(IOException e) { System.out.println("The exception is: "+e); } } }КЛИЕНТСКАЯ ПРОГРАММА
import java.io.*; import java.net.*; class dateclient { public static void main(String args[]) { Socket soc; DataInputStream dis; String sdate; PrintStream ps; try { InetAddress ia=InetAddress.getLocalHost(); soc=new Socket(ia,8020); dis=new DataInputStream(soc.getInputStream()); sdate=dis.readLine(); System.out.println("The data in the server is: "+sdate); } catch(IOException e) { System.out.println("The exception is: "+e); } }}
Comments