Nhận thời gian hệ thống tính bằng mili giây ở đầu, và một lần nữa ở cuối và trừ.
Để có được số mili giây kể từ năm 1970 trong POSIX bạn sẽ viết:
struct timeval tv;
gettimeofday(&tv, NULL);
return ((((unsigned long long)tv.tv_sec) * 1000) +
(((unsigned long long)tv.tv_usec)/1000));
Để có được số mili giây kể từ năm 1601 trên Windows bạn sẽ viết:
SYSTEMTIME systime;
FILETIME filetime;
GetSystemTime(&systime);
if (!SystemTimeToFileTime(&systime, &filetime))
return 0;
unsigned long long ns_since_1601;
ULARGE_INTEGER* ptr = (ULARGE_INTEGER*)&ns_since_1601;
// copy the result into the ULARGE_INTEGER; this is actually
// copying the result into the ns_since_1601 unsigned long long.
ptr->u.LowPart = filetime.dwLowDateTime;
ptr->u.HighPart = filetime.dwHighDateTime;
// Compute the number of milliseconds since 1601; we have to
// divide by 10,000, since the current value is the number of 100ns
// intervals since 1601, not ms.
return (ns_since_1601/10000);
Nếu bạn quan tâm đến bình thường hóa câu trả lời của Windows để nó cũng trả về số mili giây kể từ năm 1970, sau đó bạn sẽ phải điều chỉnh câu trả lời của mình theo 11644473600000 mili giây. Nhưng điều đó không cần thiết nếu tất cả những gì bạn quan tâm là thời gian trôi qua.
Nguồn
2009-04-08 00:26:26
Đợi, nhưng không thể liên kết ngay bây giờ –
Việc bỏ phiếu quá gần, quá muộn. Tôi có một câu trả lời. Rất cố gắng nhưng. Btw, tôi không thể tìm thấy một liên kết. –
Cửa sổ dành cho cửa sổ? sau đó thử GetTickCount (Windows API) –