首页 > 解决方案 > 此代码是否返回毫秒到秒的纪元时间

问题描述

我是 linux 程序员,正在将一些 windows 代码移植到 Linux。

这是我需要移植的 Windows 代码片段。

///////////////////////////////////////////////////////////////////////////////
//
//  static DWORD private_GetLongTime(void)
//
//      Function returns current time in the c-runtime format of the
//      number of milliseconds since midnight, January 1, 1970.
//
///////////////////////////////////////////////////////////////////////////////
//
static DWORD private_GetLongTime(void)
{
    SYSTEMTIME SystemTime;
    DWORD dwDateTime = 0;
    WORD wYear = 1970;
    WORD wDays = 0;
    INT64 FileTime;
    INT64 FileTime2;
    INT64    SecondsSince1970;

    // read the current time
    GetSystemTime(&SystemTime);

    SystemTimeToFileTime(&SystemTime,(FILETIME *) &FileTime);

    SystemTime.wYear   = 1970;
    SystemTime.wMonth  = 1;
    SystemTime.wDay    = 1;
    SystemTime.wHour   = 0;
    SystemTime.wMinute = 0;
    SystemTime.wSecond = 0;
    SystemTime.wMilliseconds = 0;
    SystemTimeToFileTime(&SystemTime,(FILETIME *) &FileTime2);

    SecondsSince1970 = (INT64) FileTime - (INT64) FileTime2;

    dwDateTime = (DWORD ) (SecondsSince1970/ 10000000L);

    return dwDateTime;
}

评论说它正在返回毫秒,但根据我对 API 的理解,它正在以秒为单位返回......请确认......

标签: clinuxdatetimewinapi

解决方案


static DWORD private_GetLongTime(void)返回秒。


推荐阅读