我正在开发简单的游戏(只是为了好玩)。
我的服务器位于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());
我是gettin格式(输出):
Calender - Time in milliseconds :1419089968022
Date() - Time in milliseconds: 1419089968022
为什么呢?问题出在哪儿?我怎么能得到相同的时间?
两个程序都在同一台PC上运行(win 8.1)
答案 0 :(得分:1)
首先。第一段代码似乎根本不是标准的C代码,或者你使用的是一些我根本不知道的库。
没有简单的方法可以在标准C中以不到一秒的精度获得实际时间。但是这里是Java和C的实际工作示例,所以我希望这会有所帮助。
<强>爪哇强>
package stackOverflow;
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