In ogg-c, come posso convertire un numero intero (che rappresenta i secondi) in giorni, minuti, ore?Convertire i secondi in giorni, minuti e ore in Oggettivo
Grazie!
In ogg-c, come posso convertire un numero intero (che rappresenta i secondi) in giorni, minuti, ore?Convertire i secondi in giorni, minuti e ore in Oggettivo
Grazie!
In questo caso, è sufficiente dividere.
days = num_seconds/(60 * 60 * 24);
num_seconds -= days * (60 * 60 * 24);
hours = num_seconds/(60 * 60);
num_seconds -= hours * (60 * 60);
minutes = num_seconds/60;
Per ulteriori sofisticati calcoli di data, come ad esempio il numero di giorni entro i dieci milioni di secondi dopo 15:00 il 19 gennaio del 1983, si può usare la classe NSCalendar con NSDateComponents. La guida alla programmazione di data e ora di Apple ti aiuta qui.
provare questo,
int forHours = seconds/3600,
remainder = seconds % 3600,
forMinutes = remainder/60,
forSeconds = remainder % 60;
e lo si può utilizzare per ottenere più dettagli come giorni, settimane, mesi e anni, seguendo la stessa procedura
Questo è il modo più pulito e più conciso. –
Buon metodo.se secondi non è un tipo intero, non possiamo eseguire operazioni come ** remainder = seconds% 3600 **. – Gangadhar
La domanda in realtà menzionata è un numero intero. –
Utilizzare la funzione strftime built-in() :
static char timestr[80];
char * HHMMSS (time_t secs)
{
struct tm ts;
ts = *localtime(&secs);
strftime(timestr, sizeof(timestr), "%a %b %d %H:%M:%S %Y %Z", &ts); // "Mon May 1, 2012 hh:mm:ss zzz"
return timestr;
}
Il modo più preferito in Objective-C potrebbe essere questa, come consigliare da Apple nel loro doc.
NSDate *startDate = [NSDate date];
NSDate *endDate = [NSDate dateWithTimeInterval:(365*24*60*60*3+24*60*60*129) sinceDate:startDate];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:startDate
toDate:endDate options:0];
NSInteger years = [components year];
NSInteger months = [components month];
NSInteger days = [components day];
NSLog(@"years = %ld months = %ld days = %ld",years,months,days);
Assicurarsi di non recuperare i componenti non definiti con i unitFlags, integer sarà "indefinito".
non si interromperà se il calcolo viene eseguito in modo tale che DTS o qualsiasi cosa cada tra 'startDate' e' endDate'? –
So che questo è un vecchio post ma volevo condividere comunque. Il seguente codice è quello che uso.
int seconds = (totalSeconds % 60);
int minutes = (totalSeconds % 3600)/60;
int hours = (totalSeconds % 86400)/3600;
int days = (totalSeconds % (86400 * 30))/86400;
Prima riga: otteniamo il resto dei secondi dividendo per numero di secondi in un minuto.
Seconda riga: otteniamo il resto dei secondi dopo la divisione per il numero di secondi in un'ora. Quindi lo dividiamo per secondi in un minuto.
Terza riga: otteniamo il resto dei secondi dopo la divisione per il numero di secondi in un giorno. Quindi lo dividiamo per il numero di secondi in un'ora.
Quarta riga: otteniamo il resto del secondo dopo aver diviso per il numero di secondi in un mese. Quindi lo dividiamo per il numero di secondi in un giorno. Potremmo utilizzare il seguente per la struttura Days ...
int days = totalSeconds/86400;
Ma se abbiamo usato la linea precedente e volevamo proseguire ed ottenere mesi ci ritroveremmo con 1 mese e 30 giorni quando volevamo ottenere solo 1 mese.
Apri un parco giochi in Xcode e provalo.
questa è la migliore risposta – Clint
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date dateObj1=null;
Date dateObj2=null;
try {
// String format = "MM/dd/yyyy hh:mm:ss";
dateObj1 = sdf.parse(Appconstant.One_One_time);
dateObj2 = sdf.parse(Appconstant.One_Two_time);
Log.e(TAG, "dateObj12" + dateObj1.toString() + "---" + dateObj2.toString());
DecimalFormat crunchifyFormatter = new DecimalFormat("###,###");
long diff = dateObj2.getTime() - dateObj1.getTime();
/*int diffDays = (int) (diff/(24 * 60 * 60 * 1000));
System.out.println("difference between days: " + diffDays);
int diffhours = (int) (diff/(60 * 60 * 1000));
System.out.println("difference between hours: "
+ crunchifyFormatter.format(diffhours));
int diffmin = (int) (diff/(60 * 1000));
System.out.println("difference between minutes: "
+ crunchifyFormatter.format(diffmin));*/
int diffsec = (int) (diff/(1000));
System.out.println("difference between seconds:"
+ crunchifyFormatter.format(diffsec));
visualizza il codice .... – Vela
Solo una modifica bit sia compatibile con 32 bit & 64 bit. Utilizzando NSInteger
il sistema verrà automaticamente convertito in int o long basando su 32/64 bit.
NSInteger seconds = 10000;
NSInteger remainder = seconds % 3600;
NSInteger hours = seconds/3600;
NSInteger minutes = remainder/60;
NSInteger forSeconds = remainder % 60;
Allo stesso modo è possibile convertire in giorni, settimane, mesi, anni
Prova a fare quanto segue:
x=int(input("enter a positive integer: "))
sec = int(x % 60);
minu =int((x % 3600)/60);
ho =int((x % 86400)/3600);
days =int(x/(60 * 60 * 24));
print(int(days),"days", ho,"hours", minu , "minutes" , sec ,"seconds")
otterrete giorni, ore, minuti e secondi da totale secondi (self.secondsLeft)
days = self.secondsLeft/86400;
hours = (self.secondsLeft %86400)/3600;
minutes = (self.secondsLeft % 3600)/60;
seconds = (self.secondsLeft %3600) % 60;
Codice ......
[NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
-(void) updateCountdown {
int days,hours,minutes,seconds;
self.secondsLeft--;
days = self.secondsLeft/86400;
hours = (self.secondsLeft %86400)/3600;
minutes = (self.secondsLeft % 3600)/60;
seconds = (self.secondsLeft %3600) % 60;
NSLog(@"Time Remaining =%@",[NSString stringWithFormat:@"%02d:%02d:%02d:%02d",days, hours, minutes,seconds]);
}
Questo è il mio algoritmo per la conversione di secondi per secondi, minuti e ore (utilizzando solo la quantità totale di secondi e la relazione tra ciascuno di essi):
int S = totalSeconds % BaseSMH
int M = ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2)/BaseSMH
int H = (totalSeconds - totalSeconds % BaseSMH - ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2))/BaseSMH^2
E qui segue la mia spiegazione di esso :
test tempo convertito in secondi: HH: MM: SS = 02:20:10 => totalseconds = 3600 + 2 * 20 * 60 + 10 = 7200 + 1200 + 10 = 8410
La base fra secondi -> minuti e minuti -> ore è 60 (da secondi -> ore è 60^2 = 3600).
int totalSeconds = 8410
const int BaseSMH = 60
Ogni unità (qui rappresentato da una variabile) può essere calcolato rimuovendo l'unità precedente (espresso in secondi) dalla quantità totale di secondi e dividerlo per il suo rapporto tra secondi e l'unità stiamo cercando di calcolare. Questo è ciò che ogni calulation assomiglia usando questo algoritmo:
int S = totalSeconds % BaseSMH
int M = ((totalSeconds - S) % BaseSMH^2)/BaseSMH
int H = (totalSeconds - S - M * BaseSMH)/BaseSMH^2
Come per tutti la matematica ora possiamo sostituire ogni unità nei minuti e ore calcoli con quanto abbiamo calcolato l'unità precedente e ogni calcolo sarà quindi simile a questa (ricordare che divide con BaseSMH nel calcolo M e moltiplicando per BaseSMH nel calulation H annulla a vicenda):
int S = totalSeconds % BaseSMH
int M = ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2)/BaseSMH
int H = (totalSeconds - totalSeconds % BaseSMH - ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2))/BaseSMH^2
test con le "totalseconds" e "BaseSMH" dall'alto sarà simile a questa:
int S = 8410 % 60
int M = ((8410 - 8410 % 60) % 60^2)/60
int H = (8410 - 8410 % 60 - ((8410 - 8410 % 60) % 60^2))/60^2
Calcolo S:
int S = 8410 % 60 = 10
M Calcolo:
int M = ((8410 - 8410 % 60) % 60^2)/60
= ((8410 - 10) % 3600)/60
= (8400 % 3600)/60
= 1200/60
= 20
H Calcolo:
int H = (8410 - 8410 % 60 - ((8410 - 8410 % 60) % 60^2))/60^2
= (8410 - 10 - ((8410 - 10) % 3600))/3600
= (8400 - (8400 % 3600))/3600
= (8400 - 1200)/3600
= 7200/3600
= 2
Con questo è possibile aggiungere qualsiasi unità che si desidera, basta calcolare ciò che il la relazione è tra secondi e l'unità che vuoi. Spero che tu capisca le mie spiegazioni su ogni passaggio. In caso contrario, basta chiedere e posso spiegare ulteriormente.
Grazie. Speravo che ci fosse qualche metodo integrato, comunque. – higginbotham
@higginbotham - Dovresti contrassegnare questa risposta come corretta se ti ha aiutato. – Moshe