我正在开发简单的游戏(只是为了好玩)。
我在 c
中有服务器,在 java
中有客户端。
我想在 server
和 client
上获得实际时间,但我无法得到相同的结果时间。
在我使用的服务器上:
// the system time
SYSTEMTIME systemTime;
GetSystemTime(&systemTime);
// the current file time
FILETIME fileTime;
SystemTimeToFileTime(&systemTime, &fileTime);
// filetime in 100 nanosecond resolution
ULONGLONG fileTimeNano100;
fileTimeNano100 = (((ULONGLONG) fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;
//to milliseconds and unix windows epoche offset removed
ULONGLONG posixTime = fileTimeNano100 / 10000 - 11644473600000;
return posixTime;
我得到时间格式(输出):1750721123
在我使用的客户端上
long lDateTime = new Date().getTime();
System.out.println("Date() - Time in milliseconds: " + lDateTime);
Calendar lCDateTime = Calendar.getInstance();
System.out.println("Calender - Time in milliseconds :" + lCDateTime.getTimeInMillis());
我开始格式化(输出):
Calender - Time in milliseconds :1419089968022
Date() - Time in milliseconds: 1419089968022
为什么?哪里有问题?我怎样才能得到相同的时间?
两个程序在同一台电脑上运行(win 8.1)
最佳答案
首先。第一个代码块似乎根本不是标准的 C 代码,或者更确切地说,您使用了一些我根本不知道的库。
没有简单的方法可以在标准 C 中以小于一秒的精度获取实际时间。但这里是实际工作的 Java 和 C 示例,所以我希望这会有所帮助。
Java
封装堆栈溢出;
import java.util.Date;
public class Main {
public static void main(String[] args) {
long lDateTime = new Date().getTime();
System.out.println(lDateTime/1000);
}
}
输出:1436200408
C
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<time.h>
int main(void) {
struct timeval tv;
gettimeofday(&tv, NULL);
printf("%ld\n", tv.tv_sec);
return 0;
}
输出:1436200418
关于java - 同步实际时间(java,c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581734/