2008-10-13 10 views
1

J'essaie d'obtenir la date du système dans un programme C sur un compilateur MSVC++ 6.0. J'utilise un appel système:Obtenir la date du système dans MSVC 6.0

système ("date/T") (sortie est par exemple 13-Oct-08, qui est la date sur mon système dans le format que j'ai défini)

mais cette impression la date à la console d'entrée/sortie.

Comment puis-je prendre cette date comme retournée par l'appel système ci-dessus et le stocker comme une valeur de chaîne à une chaîne définie dans mon code? Ou

Y at-il une autre API que je peux utiliser pour obtenir la date au format mentionné ci-dessus (13-Oct-08, ou 13-10-08)?

-AD

Répondre

0

Il y a deux façons de le faire en utilisant les fonctions de l'API, deux qui sautent à l'esprit sont strftime et GetDateFormat.

Je voudrais fournir des exemples mais je crains de ne pas avoir de compilateur Win32 à portée de main pour le moment. Espérons que les exemples dans la documentation ci-dessus sont suffisants.

1
#include <windows.h> 
#include <iostream> 

int main() { 

    SYSTEMTIME systmDateTime = {}; 
    ::GetLocalTime(&systmDateTime); 

    wchar_t wszDate[64] = {}; 
    int const result = ::GetDateFormatW(
    LOCALE_USER_DEFAULT, DATE_SHORTDATE, 
    &systmDateTime, 0, wszDate, _countof(wszDate)); 

    if (result) { 
    std::wcout << wszDate; 
    } 
} 
0

Avoir une lecture de Win32 Time functions; GetLocalTime peut être votre ami. Il y a aussi les fonctions de temps C standard, l'heure et la durée de la chaîne.

Pour référence future, dans un programme C, il est presque toujours une mauvaise réponse d'invoquer un utilitaire externe et de capturer son STDOUT.

0

Merci pour les pointeurs.

J'ai utilisé cela et il a servi mon but:

#include <time.h> 
#include <stdio.h> 
#include <sys/types.h> 
#include <sys/timeb.h> 
#include <string.h> 
    int main() 

    { 

     char tmpbuf[128]; 

     time_t ltime; 

     struct tm *today; 

     _strdate(tmpbuf); 
     printf("\n before formatting date is %s",tmpbuf); 

     time(&ltime); 
     today = localtime(&ltime); 

     strftime(tmpbuf,128,"%d-%m-%y",today); 
     printf("\nafter formatting date is %s\n", tmpbuf); 

    } 

-AD