16,471
社区成员
发帖
与我相关
我的任务
分享
__int64 tmSrc = 1392904431274i64;
time_t tm = (time_t)(tmSrc/1000);
int msSecod = (int)(tmSrc%1000);
CTime tm2(tm);
TRACE(_T("%I64d = %s.%03d\n"),
tmSrc, tm2.Format(_T("%Y-%m-%d %H:%M:%S")), msSecod);
//out 1392904431274 = 2014-02-20 21:53:51.274
SYSTEMTIME tmSys;
GetLocalTime(&tmSys);
CTime tm3(tmSys);
__int64 tmDst = tm3.GetTime()*1000i64 + tmSys.wMilliseconds;
TRACE(_T("%s.%03d = %I64d\n"),
tm3.Format(_T("%Y-%m-%d %H:%M:%S")), tmSys.wMilliseconds, tmDst);
//out 2014-02-21 11:56:15.015 = 1392954975015
CTime tm = CTime::GetCurrentTime();
CString str;
str.Format(_T("%u"),tm.GetTime() );
ULONGLONG GetUnixTimeStamp(void)
{
/*
// 因为这值算出来是定死的,因此直接写死在程序里。
FILETIME ft1 = { 0 };
SYSTEMTIME st1 = { 1970, 1, 0, 1, 0, 0, 0, 0 };
ULARGE_INTEGER ull1 = { 0 };
::SystemTimeToFileTime(&st1, &ft1);
ull1.LowPart = ft1.dwLowDateTime;
ull1.HighPart = ft1.dwHighDateTime;
// ull1.QuadPart == 116444736000000000ULL
*/
FILETIME ft = { 0 };
SYSTEMTIME st = { 0 };
ULARGE_INTEGER ull = { 0 };
::GetSystemTime(&st);
::SystemTimeToFileTime(&st, &ft);
ull.LowPart = ft.dwLowDateTime;
ull.HighPart = ft.dwHighDateTime;
// return (ull.QuadPart - ull1.QuadPart) / 10000000ULL;
return (ull.QuadPart - 116444736000000000ULL) / 10000000ULL;
}
TCHAR buff[512]={0};
SYSTEMTIME st;GetLocalTime(&st);
_stprintf(msgCnt,TEXT("%04d%02d%02d%02d%02d%02d"),st.wYear,st.wMinute,st.wDay,st.wHour,st.wMinute,st.wSecond);
输出201402210923typedef unsigned long uint32;
typedef unsigned char uchar;
typedef unsigned short int16u; /*无符号16位整型变量*/
typedef short int uint16;
typedef struct
{
int16u UnixYear;
uchar UnixMonth;
uchar UnixDay;
uchar UnixHour;
uchar UnixMinute;
uchar UnixSecond;
uint32 Unixtime ;
}TIME_UNIX;
/********************************************************************************************************
* 函数名称: void Unixtime_To_Localtime(uint32 unixtimetemp)
* 功能描述: unixtime转地方时间
*********************************************************************************************************/
void Unixtime_To_Localtime(uint32 unixtimetemp,TIME_UNIX * Localtime)
{
static uint16 month[13]={0,31,59,90,120,151,181,212,243,273,304,334,365}; /*注意溢出*/
uchar i;
uint16 x,extraday=0;
uint16 unixtimeyear,unixtimeday;
unixtimetemp = unixtimetemp + 28800; /*加上北京时间*/
unixtimeyear = unixtimetemp/31536000;
Localtime->UnixYear = 1970+unixtimeyear;
for( x=1970;x<Localtime->UnixYear;x++) /*加上闰年二月多的一天*/
{
if(((x % 4) == 0 && ((x % 100) != 0 || (x % 400) == 0)))
{
extraday++;
}
}
if((((Localtime->UnixYear) % 4) == 0 && (((Localtime->UnixYear) % 100) != 0 || ((Localtime->UnixYear) % 400) == 0)))
{
for(i=2;i<12;i++)
{
month[i] = month[i] + 1;
}
}
unixtimeday = unixtimetemp%31536000/86400 - extraday;
for(i=0;i<12;i++)
{
if((unixtimeday>=month[i])&&(unixtimeday<month[i+1]))
{
Localtime->UnixMonth = i+1;
Localtime->UnixDay = unixtimeday - month[i]+1;
}
}
Localtime->UnixHour = unixtimetemp%86400/3600;
Localtime->UnixMinute = unixtimetemp%3600/60;
Localtime->UnixSecond = unixtimetemp%60;
}
/********************************************************************************************************
* 函数名称: uint32 Localtime_To_Unixtime(uint16 year,uchar month,uchar day,uchar hour,uchar minute,uchar second)
* 功能描述: 地方时间转unixtime
*********************************************************************************************************/
uint32 Localtime_To_Unixtime(uint16 year,uint16 month,uint16 day,uint16 hour,uint16 minute,uint16 second)
{
static uint16 monthtable[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};
uint32 unixtimetemp,unixtimeday,unixtimehour;
uchar i;
uint16 x,extraday=0;
uint16 unixtimeyear;
uchar unixtimemonth;
for(x=1970;x<year;x++) /*加上闰年二月多的一天*/
{
if(((x % 4) == 0 && ((x % 100) != 0 || (x % 400) == 0)))
{
extraday++;
}
}
unixtimeyear = year - 1970;
if((((year) % 4) == 0 && (((year) % 100) != 0 || ((year) % 400) == 0)))
{
for(i=2;i<12;i++)
{
monthtable[i] = monthtable[i] + 1;
}
}
unixtimemonth = month;
unixtimehour = hour;
unixtimeday = unixtimeyear*365 + monthtable[unixtimemonth-1] + day-1 + extraday;
/*修改UnixHour-8可能导致变成负数的问题,原来为“(UnixHour-8)*3600”*/
/*ZG20080126 修改UnixHour*3600可能导致数据溢出的问题,现在改为(unixtimehour)*3600*/
unixtimetemp = unixtimeday*86400 + (unixtimehour)*3600-28800+minute*60 + second;
return(unixtimetemp);
}