Я работаю над легкой игрой (просто для удовольствия). У меня есть сервер в 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
Зачем? В чем проблема? Как я могу получить одно и то же время?
Обе программы работают на одном компьютере (выигрыш 8.1)
Прежде всего. Первый блок кода вообще не является стандартным кодом C, или, скорее, вы используете некоторые библиотеки, которые я просто не знаю.
Нет простого способа получить фактическое время с точностью менее секунды в стандарте C. Но вот пример с Java и C, который действительно работает, поэтому я надеюсь, что это поможет.
Ява
пакет 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
С
#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