如何在 Java 中获取当前服务器的时间?我试过System.currentTimeMills()
了,但它返回的是客户端时间而不是服务器时间。我想以毫秒为单位获得“服务器”的时间。
我在网上搜索,但我没有得到。所有代码都从1970
. 我想要的是例如:当前服务器时间9/25/2012:10:19AM
以毫秒为单位。
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);
如果您希望您的客户端获取服务器的时间,您必须向服务器发出请求并让服务器在响应中发回其当前时间。
如果您希望以毫秒为单位从服务器端返回当前时间 ( 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客户端,并且您不需要服务器报告的确切时间(例如,仅用于演示),此方法将消除服务器调用。
服务器程序
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);
}
}
}
试试这个:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM/dd/HH:mm");
String cureentdate = sdf.format(new java.util.Date());
如果你想从你的服务器获取时间戳,你可以使用
new Timestamp(new Date().getTime());