SAMPLE: Code to Provide Time and Date Information

Last reviewed: February 15, 1996
Article ID: Q70070
The information in this article applies to:
  • Microsoft Windows Software Development Kit (SDK) for Windows versions 3.0 and 3.1

SUMMARY

The information below describes a set of functions available in the Microsoft Software Library for formatting time and date strings using the international settings in the Windows Control Panel.

WINTIME is a file in the Microsoft Software Library that formats time and date strings according to the Control Panel settings.

Download WINTIME.EXE, a self-extracting file, from the Microsoft Software Library (MSL) on the following services:

  • Microsoft Download Service (MSDL)

          Dial (206) 936-6735 to connect to MSDL
          Download WINTIME.EXE (size: 30332 bytes) 
    
  • Internet (anonymous FTP)

          ftp ftp.microsoft.com
          Change to the \SOFTLIB\MSLFILES directory
          Get WINTIME.EXE (size: 30332 bytes) 
    

MORE INFORMATION

Windows allows the user to specify, with the Control Panel, the appropriate format for the date and time in the user's country. The Windows API provides no function to format strings of date and time information according to the Control Panel's settings. The sample code module WINTIME.C provides C source code for five functions that an application can use to format the date and time.

WINTIME.C is designed to be as flexible and portable as possible. The module can be used in an application or in a dynamic-link library (DLL) without modification.

Included with the WINTIME.C file is a sample application that demonstrates how to use the functions.

The five functions provided by WINTIME are documented below:

  1. LPSTR FAR PASCAL TimeGetCurDate(LPSTR lpszDate, WORD wFlags)

    Description:

         TimeGetCurDate() returns the current date, formatted as specified
         by the user in the Control Panel.
    

    Arguments:

         Type/Name
    
                  Description
    
         LPSTR lpszDate
                  Points to a buffer that is to receive the date. Must be
                  large enough to hold the longest date possible (64 bytes
                  should be large enough).
         struct tm *lpTM
                  Pointer to a "tm" structure (from TIME.H) that contains
                  the time and date to be formatted.
    
         WORD wFlags
                  Specifies flags that modify the behavior of the function.
                  May be any of the following:
    
            Flag              Meaning
            ----              -------
            0                 The date will be formatted exactly the way
                              Control Panel does it, using Windows's
                              international settings. The date will be in
                              the long date format (Sunday, January 1,
                              1991).
    
            DATE_SHORTDATE    Forces the date to be formatted using the
                              short date format (1/01/91).
    
            DATE_NODAYOFWEEK  The date will be formatted without the day
                              of week. This flag may not be used with the
                              DATE_SHORTDATE flag (that is, January 1,
                              1991).
    
    

  2. LPSTR FAR PASCAL TimeGetCurTime(LPSTR lpszTime, WORD wFlags)

    Description:

         TimeGetCurTime() returns the current time, formatted as specified
         by the user in the Control Panel.
    

    Arguments:

         Type/Name
    
                  Description
    
         LPSTR lpszTime
                  Points to a buffer that is to receive the formatted
                  time. Must be large enough to hold the longest date
                  possible (64 bytes should be large enough).
    
         WORD wFlags
                  Specifies flags that modify the behavior of the function.
                  May be any of the following:
    
            Flag              Meaning
            ----              -------
            0                 The time will be formatted exactly the way
                              Control Panel does it, using Windows's
                              international settings (for example,
                              1:00:00 AM).
    
            TIME_12HOUR       The time will be formatted in 12 hour format
                              regardless of the WIN.INI international
                              settings. This flag may not be used with the
                              TIME_24HOUR flag (for example, 2:32:10 PM).
    
            TIME_24HOUR       The time will be formatted in 24 hour format
                              regardless of the WIN.INI international
                              settings. This flag may not be used with the
                              TIME_12HOUR flag (for example, 14:32:10).
    
            TIME_NOSECONDS    The time will be formatted without seconds
                              (for example, 2:32 PM).
    
    
    

  3. LPSTR FAR PASCAL TimeFormatDate(LPSTR lpszDate,
                                       struct tm FAR *lpTM,
                                       WORD wFlags)
    
       Description:
         TimeFormatDate() returns the date, specified in the tm structure,
         formatted as specified by the user in the Control Panel.
    
       Arguments:
         Type/Name
                  Description
    
         LPSTR lpszDate
                  Points to a buffer that is to receive the date. Must be
                  large enough to hold the longest date possible (64 bytes
                  should be large enough).
    
         struct tm *lpTM
                  Pointer to a "tm" structure (from TIME.H) that contains
                  the time and date to be formatted.
    
         WORD wFlags
                  Specifies flags that modify the behavior of the function.
                  May be any of the following:
    
            Flag              Meaning
            ----              -------
            0                 The date will be formatted exactly the way
                              Control Panel does it, using Windows's
                              international settings. The date will be in
                              the long date format (Sunday, January 1,
                              1991).
    
            DATE_SHORTDATE    Forces the date to be formatted using the
                              short date format (1/01/91).
    
            DATE_NODAYOFWEEK  The date will be formatted without the day
                              of week. This flag may not be used with the
                              DATE_SHORTDATE flag (for example, January 1,
                              1991).
    
    
    

  4. LPSTR FAR PASCAL TimeFormatTime(LPSTR lpszTime,
                                       struct tm FAR *lpTM,
                                       WORD wFlags)
    
       Description:
         Function returns the time, specified in the tm structure,
         formatted as specified by the user in the Control Panel.
    
       Arguments:
         Type/Name
                  Description
    
         LPSTR lpszTime
                  Points to a buffer that is to receive the formatted
                  time. Must be large enough to hold the longest date
                  possible (64 bytes should be large enough).
    
         struct tm *lpTM
                  Pointer to a "tm" structure (from TIME.H) that contains
                  the time and date to be formatted.
    
         WORD wFlags
                  Specifies flags that modify the behavior of the function.
                  May be any of the following:
    
            Flag              Meaning
            ----              -------
            0                 The time will be formatted exactly the way
                              Control Panel does it, using Windows's
                              international settings (for example,
                              1:00:00 AM).
    
            TIME_12HOUR       The time will be formatted in 12 hour format
                              regardless of the WIN.INI international
                              settings. This flag may not be used with the
                              TIME_24HOUR flag (for example, 2:32:10 PM).
    
            TIME_24HOUR       The time will be formatted in 24 hour format
                              regardless of the WIN.INI international
                              settings. This flag may not be used with the
                              TIME_12HOUR flag (for example, 14:32:10).
    
            TIME_NOSECONDS    The time will be formatted without seconds
                              (for example, 2:32 PM).
    
    
    

  5. void FAR PASCAL TimeResetInternational(void)

    Description:

         This function sets some local static variables to Windows's
         current time and date format settings.
    

         This function should be called every time a WM_WININICHANGE
         message is sent for the [intl] section and when the DLL or
         application using these functions is invoked.
    

         These variables are in the DLL data segment. Therefore, if one
         application changes this information, the others will see the
         change.
    


Additional reference words: 3.00 3.10 softlib WINTIME.EXE
KBCategory: kbprg kbfile
KBSubcategory: UsrSys


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: February 15, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.