VC语言

本类阅读TOP10

·VC++下使用ADO编写数据库程序
·VC++ 学习笔记(二)
·Windows消息大全
·每个开发人员现在应该下载的十种必备工具
·在2000和xp下,隐藏进程,VC6.0测试通过!!!
·用Visual C++打造IE浏览器(1)
·Netmsg 局域网聊天程序
·教你用VC6做QQ对对碰外挂程序
·VC++学习笔记(四)
·VC++中经常使用的函数!~~

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
【编程】代码片段 - 日期时间

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

本人写的一些日期时间转换函数:

// =============================================================================

//  文件名称:     TimeUtil.hpp

//  内容说明:    

// 

//  编写人:         IYFT

//  E-Mail:           IYFT@163.com

// 

//  创建日期:     2004070110:52:54

//  修改日期:     2004091315:08:35

// -----------------------------------------------------------------------------

// 

//  修改记录:

//  -

//  -

// 

// ============================================================================+

 

// =============================================================================

//  保证源文件只会被编译一次

// -----------------------------------------------------------------------------

#if _MSC_VER >= 1000

// 使源文件只会被编译一次

#pragma once

#endif // _MSC_VER >= 1000

 

#ifndef __HPP_TIMEUTIL_HPP__

#define __HPP_TIMEUTIL_HPP__

// =============================================================================

 

#define DTM_DATE_LENGTH                    10

#define DTM_DATETIME_LENGTH           20

 

// 返回当前本地时区(单位为秒,因为有些时区是小数)

// 北京时区为    +08:00 = +8*60*60         = +28800

// 德黑兰时区为       +03:30 = +3*60*60 + 30*60 = +12600

// 夏威夷时区为       -10:00 = -10*60*60        = -36000

STATIC LONG DTM_getTimeZone(OUT TIME_ZONE_INFORMATION **ppZT = NULL)

{

    STATIC TIME_ZONE_INFORMATION tz;

    STATIC DWORD nResult = 0;

    STATIC BOOL  bInited = FALSE;

 

    if(bInited == FALSE)

       {

        switch(::GetTimeZoneInformation(&tz))

              {

            case  TIME_ZONE_ID_INVALID:

                nResult = 0;

                            break;

                     default:

                nResult = ((tz.Bias + tz.StandardBias) * -60);

        }

        bInited = TRUE;

    }

       if(ppZT != NULL)

       {

              *ppZT = &tz;

       }

    return nResult;

}

 

// 返回当前本地时间

STATIC DWORD DTM_getLocaleCurrentDate()

{

       SYSTEMTIME t; ::GetLocalTime(&t);

       DWORD nDate   = t.wYear * 10000 + t.wMonth * 100 + t.wDay;

       return nDate;

}

 

// 返回当前本地时间

STATIC DWORD DTM_getLocaleCurrentDate(OUT LPTSTR sDate)

{

       SYSTEMTIME t; ::GetLocalTime(&t);

       DWORD nDate   = t.wYear * 10000 + t.wMonth * 100 + t.wDay;

       LPTSTR sPos = sDate;

       INT2T(sPos, 4, t.wYear,           4);   sPos+=4;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wMonth, 2);   sPos+=2;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wDay,            2);   sPos+=2;

       *sPos   = __T('\0');

       return nDate;

}

 

// 返回当前本地时间

STATIC VOID DTM_getLocaleCurrentString(OUT LPTSTR sDate)

{

       SYSTEMTIME t; ::GetLocalTime(&t);

       DWORD nDate   = t.wYear * 10000 + t.wMonth * 100 + t.wDay;

       LPTSTR sPos = sDate;

       INT2T(sPos, 4, t.wYear,           4);   sPos+=4;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wMonth, 2);   sPos+=2;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wDay,            2);   sPos+=2;

       *sPos++ = __T(' ');

       INT2T(sPos, 2, t.wHour,          2);   sPos+=2;

       *sPos++ = __T(':');

       INT2T(sPos, 2, t.wMinute, 2);   sPos+=2;

       *sPos++ = __T(':');

       INT2T(sPos, 2, t.wSecond,       2);   sPos+=2;

       *sPos   = __T('\0');

}

 

// 返回当前标准时间

// 注意:格林威治标准时间和本地时间有时差,北京是8个小时

STATIC DWORD DTM_getCurrentDate()

{

       SYSTEMTIME t; ::GetSystemTime(&t);

       DWORD nDate   = t.wYear * 10000 + t.wMonth * 100 + t.wDay;

       return nDate;

}

 

// 返回当前标准时间

// 注意:格林威治标准时间和本地时间有时差,北京是8个小时

STATIC DWORD DTM_getCurrentDate(OUT LPTSTR sDate)

{

       SYSTEMTIME t; ::GetSystemTime(&t);

       DWORD nDate   = t.wYear * 10000 + t.wMonth * 100 + t.wDay;

       LPTSTR sPos = sDate;

       INT2T(sPos, 4, t.wYear,           4);   sPos+=4;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wMonth, 2);   sPos+=2;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wDay,            2);   sPos+=2;

       *sPos   = __T('\0');

       return nDate;

}

 

// 返回当前标准时间

// 注意:格林威治标准时间和本地时间有时差,北京是8个小时

STATIC VOID DTM_getCurrentString(OUT LPTSTR sDate)

{

       SYSTEMTIME t; ::GetSystemTime(&t);

       DWORD nDate   = t.wYear * 10000 + t.wMonth * 100 + t.wDay;

       LPTSTR sPos = sDate;

       INT2T(sPos, 4, t.wYear,           4);   sPos+=4;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wMonth, 2);   sPos+=2;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wDay,            2);   sPos+=2;

       *sPos++ = __T(' ');

       INT2T(sPos, 2, t.wHour,          2);   sPos+=2;

       *sPos++ = __T(':');

       INT2T(sPos, 2, t.wMinute, 2);   sPos+=2;

       *sPos++ = __T(':');

       INT2T(sPos, 2, t.wSecond,       2);   sPos+=2;

       *sPos   = __T('\0');

}

 

// 返回日期时间字符串;格式为 [YYYY-MM-DD HH:MM:SS]

STATIC VOID DTM_getString(IN SYSTEMTIME t, OUT LPTSTR sTime)

{

       LPTSTR sPos = sTime;

       INT2T(sPos, 4, t.wYear,           4);   sPos+=4;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wMonth, 2);   sPos+=2;

       *sPos++ = __T('-');

       INT2T(sPos, 2, t.wDay,            2);   sPos+=2;

       *sPos++ = __T(' ');

       INT2T(sPos, 2, t.wHour,          2);   sPos+=2;

       *sPos++ = __T(':');

       INT2T(sPos, 2, t.wMinute, 2);   sPos+=2;

       *sPos++ = __T(':');

       INT2T(sPos, 2, t.wSecond,       2);   sPos+=2;

       *sPos   = __T('\0'); 

}

 

// 返回时间字符串;格式为 [X X ]

STATIC VOID DTM_getTimeText(IN DWORD nTime, OUT LPTSTR