PDA

Visualizza la versione completa : [C++]Gestione date


Luc@s
11-04-2003, 15:35
Come ricavo l'ora attuale in formato HH:MM ???
Posso convertirla in stringa?

akiross
12-04-2003, 15:35
bhe, puoi usare la struttura contenuta in <ctime>: tm
contiene molti campi, ma quelli che ti interessano sono:
tm_hour
tm_min
per ricavare l'ora attuale, usi la funzione mktime(struct tm *time); (se nn mi sbaglio)
prova, buona fortuna ^_^
ciao

akiross
12-04-2003, 15:38
ah gia, che scemo...
per avere una stringa in quel formato devi usare la funzione
strftime(char *str, int max, const char *ftm, struct tm *time);
mette nella str passata la stringa risultato. max e' la lunghezza massima della stringa, ftm e' il formato ("%M:%H" per MM:HH 24 ore) e time e' la struttura da usare

spero di nn essermi sbagliato
ciao

Luc@s
12-04-2003, 17:22
se mi va ti menziono nella mia lib!

Luc@s
12-04-2003, 17:27
/**
* Virtuale: No
* Funzione: Ritornare l'ora
* Argomenti: -
* Return: l'ora grezza
* Eccezioni: -
*/
void Time::SetOra()
{
time_t TIME;
tm *tim;
char *tmp;
const char *ftm = "%M:%H";
strftime(tmp, 7, &fmt, tim);
// setta la var privata times con il valore di tmp;
times = tmp;

}

Non mi va:dottò:

akiross
12-04-2003, 18:04
non mi va e' generico... che problemi da?

Luc@s
12-04-2003, 18:06
#include <ctime>
#include <cstring>

#include "Time.h" // class's header file

namespace LucLib{

/*
class constructor
*/
Time::Time()
{
// insert your code here
}

/*
class destructor
*/
Time::~Time()
{
// insert your code here
}

/**
* Virtuale: No
* Funzione: Ritornare l'ora
* Argomenti: -
* Return: l'ora grezza
* Eccezioni: -
*/
void Time::SetOra()
{
time_t TIME;
tm *tim;
char *tmp;
strftime(tmp, 7, "%M:%H", tim);
// setta la var privata times con il valore di tmp;
times = tmp;

}
/**
* Virtuale: No
* Funzione: Setta l'ora
* Argomenti: Il tipo di formattazione
* Return: L'ora formattata
* Eccezioni: -
*/
strings Time::format_ora(TypeOra fmt)
{
switch(fmt)
{
case ORA_FORMAT_LOCALE:
format_times = times;
break;
case ORA_FORMAT_PUNTO:
char ora[5];
ora[2] = '.';// cambia : in .
format_times = ora;
break;
}
return format_times;
}
}//:-


Risolto:eek:

akiross
12-04-2003, 18:10
allora, innanzi tutto un obrobrio:


char *tmp;
...
strftime(tmp, 7, &fmt, tim);


malissimo
dichiari un puntatore a carattere e poi lo usi per metterci dentro una stringa... male male, il risultato sara' il 90% delle volte un segmentation fault. 90% per non esagerare ^_^
fai cosi':
char str[10];
per l'ora 10 caratteri bastano e avanzano

Poi, TIME a cosa ti serve? lo dichiari e non lo usi.

Terzo, che ora pensi che tiri fuori se non la assegni tu?
la funzione strftime, prende una stuttura tm, e IN BASE A QUELLA mette l'ora nella stringa... altrimenti a cosa servirebbe?

cosi':
tm tempo;
mktime(&tempo); // a tempo va l'ora attuale
strftime(str, 10, "%M:%H", &tempo);

vedi se va
poi al massimo faccio una prova io
ciao

akiross
12-04-2003, 18:23
decisamente non va.
Mi sono incuriosito, provo a farlo io

ciao

Luc@s
12-04-2003, 18:28
Originariamente inviato da akiross
decisamente non va.
Mi sono incuriosito, provo a farlo io

ciao

Poi dimmi...............cosi impariamo delle cose in +

Loading