[Pluto-help] Ricavare l'ra in formato stringa

Marco Cova giardini a libero.it
Ven 6 Lug 2001 19:50:55 CEST


"Lossani Simone Pietro, IT" wrote:
> 
> Ciao,
>        sto tentando di ricavare l'ra e data di sistema in formato stringa.
> 
> Ho usato la funz.  gmtime(tempo1) e poi ctime(tempo1), ma stampando la
> stringa risultante fprintf(stdout, ctime(tempo1)) non riesco a visualizzare
> nulla.
> Qualcuno sa perchè? C'è un modo migliore per ottenere la data e l'ora?
> 
> Grazie  e buon week end!!
>   simone.
Dall'ottimo librone di Stevens Advanced Programming in Unix Environment,
mi sembra di capire questo:
time_t time(time_t *t); il cui prototipo è in <time.h>
prende dal kernel il numero di secondi trascorsi da Epoch (1 Gennaio
1970 00:00:00 UTC). Questo è il "calendar time".

Se hai il calendar time puoi usare una delle seguenti funzioni per avere
un brokend-down time (una struct tm):
struct tm *gmtime(const time_t *t); 
struct tm *localtime(const time_t *t); il broken-down time è espresso in
UTC

time_t mktime(struct tm *tmptr);
ti permette di fare il giro inverso: da broken-down time a calendar
time.

char *asctime(const struct tm *tmptr);
char *ctime(const time_t *t);
danno la stringa che si ottiene da date(1) senza opzioni aggiuntive (più
o meno)

Infine,
size_t strftime(char *buf, size_t maxsize, const char *format, const
struct tm *tmptr);
funziona come la printf. Per i format utilizzabili, vedi la man page.
Dovrebbe tenere conto del locale, ma mi sembra in realtà non lo faccia).

In allegato un mini-esempio,
Marco.
-------------- parte successiva --------------
#include <stdio.h>
#include <time.h>

#define MAXSIZE 81

int main(void)
{
 time_t caltime;
 struct tm *bdtime; 
 char string[MAXSIZE];

 time(&caltime);
 printf("Usando ctime: %s", ctime(&caltime));
 bdtime = gmtime(&caltime);
 printf("Usando gmtime e asctime: %s", asctime(bdtime));
 bdtime = localtime(&caltime);
 printf("Usando localtime e asctime: %s", asctime(bdtime));
 strftime(string, MAXSIZE, "%A %B %G", bdtime);
 puts(string);
 
 exit(0);
}



More information about the pluto-help mailing list