Jak spočítat rozdíl v zadaném čase

q

Jak spočítat rozdíl v zadaném čase
« kdy: 28. 04. 2012, 21:19:04 »
Potřebuju spočítat rozdíl v zadaném čase.
Když např. zadám počáteční čas 15:30 a koncový čas 16:05, chci dostat výsledek 35 minut, nebo 2100 sekund (to je mi jedno). Potřebuju mít ošetřený přechod přes půlnoc: 23:50 0:20 = 30 minut. Na vstupu mě zajímají jenom hodiny a minuty.

Kód: [Vybrat]
$ rozdilCasu 15:30 16:05
35
$

Napadlo mě použít date +%s ale to bere i den.

Existuje neco hotoveho, nebo si to musim napsat sam?


kubbing

Re:Jak spočítat rozdíl v zadaném čase
« Odpověď #1 kdy: 28. 04. 2012, 22:08:29 »
NSDate a NSDateComponents (ObjC na Macu).

heh

Re:Jak spočítat rozdíl v zadaném čase
« Odpověď #2 kdy: 28. 04. 2012, 23:25:09 »
Kód: [Vybrat]
#include <stdio.h>
#define DAY_MINS

int main( int argc, char * argv[]){
int h,m,i,a,b,x;
if (argc<3)return -1;
for (i=1;i<=2;i++){
sscanf(argv[i],"%i:%i",&h,&m);
b=a;
a=m+60*h;
}
if (a>b){x=a-b;} else {x=60*24+a-b;}
printf("%u\n",x);
return 0;
}

lobo

Re:Jak spočítat rozdíl v zadaném čase
« Odpověď #3 kdy: 29. 04. 2012, 00:11:58 »
TimeSpan ts = date1.Subtract(date2);

qazasd

Re:Jak spočítat rozdíl v zadaném čase
« Odpověď #4 kdy: 29. 04. 2012, 02:08:46 »
Quick & Dirty ...

Kód: [Vybrat]
qazasd@komp:~$ ./rozdilCasu 15:30 16:05
35
qazasd@komp:~$ cat rozdilCasu
#!/bin/bash
echo $1 $2 | tr ':' ' ' | awk '{b=$1*60+$2; e=$3*60+$4; if(e<b) e+=24*60; print e-b}'