4

如何在 Java 中获取当前服务器的时间?我试过System.currentTimeMills()了,但它返回的是客户端时间而不是服务器时间。我想以毫秒为单位获得“服务器”的时间。

我在网上搜索,但我没有得到。所有代码都从1970. 我想要的是例如:当前服务器时间9/25/2012:10:19AM以毫秒为单位。

4

7 回答 7

14

System.currentTimeMillis()返回自 1970 年以来的毫秒数。

如果您在服务器上运行它,您将获得服务器时间。如果您在客户端(例如 Applet、独立桌面应用程序等)上运行它,您将获得客户端时间。要获取客户端上的服务器日期,请设置一个调用,以将格式化字符串中的服务器时间返回给客户端。

如果您想以某种方式格式化日期,首先创建一个Date()对象,然后使用SimpleDateFormat

Date d1 = new Date();
SimpleDateFormat df = new SimpleDateFormat("MM/dd/YYYY HH:mm a");
String formattedDate = df.format(d1);
于 2012-09-25T14:24:30.473 回答
7

如果您希望您的客户端获取服务器的时间,您必须向服务器发出请求并让服务器在响应中发回其当前时间。

于 2012-09-25T14:24:57.990 回答
2

如果您希望以毫秒为单位从服务器端返回当前时间 ( System.currentTimeMillis()),则需要在格式化/转换值时使用服务器的时区。

从 Java 8 开始,我们可以使用LocalTime localTime = LocalTime.now();它来获取当前系统时间。

此外,如果您知道服务器时区,则可以使用:

LocalTime localTime = LocalTime.now(ZoneId.of("GMT-06:00"));

这里"GMT-06:00"表示服务器时区,表示为与 GMT 的偏移量。您还可以使用区域名称"Europe/London",例如 等。在Java™ Platform, Standard Edition 8 API Specification中,您可以找到更多详细信息。

但请注意,使用时区方法只会在服务器时区中表示客户端时间。如果客户端和服务器时钟未正确同步,您将无法获得接近服务器上显示的时间。但是,如果时间正确同步,使用NTP客户端,并且您不需要服务器报告的确切时间(例如,仅用于演示),此方法将消除服务器调用。

于 2012-09-25T14:43:21.283 回答
2
于 2020-04-02T14:35:09.903 回答
0

服务器程序

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);

    }

}

}

于 2018-07-04T05:28:05.693 回答
0

试试这个:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM/dd/HH:mm");

    String cureentdate = sdf.format(new java.util.Date());
于 2019-12-05T17:25:43.957 回答
0

如果你想从你的服务器获取时间戳,你可以使用

new Timestamp(new Date().getTime());

于 2019-12-06T07:31:27.227 回答