DateDiff Problem

NullAhnung

Aktives Mitglied
ich habe ein problem mit DateDiff...

CODE <?php
$date_server = date("Y-m-d H:i:s ",time());
$date_utc = gmdate("Y-m-d H:i:s ",time());

$out = DateDiff(hh,$date_server,$date_utc);
echo $out;
?>


es kommt keine fehlermeldung aber auch kein ergebnis...

warum??
 
ich hab DateDiff noch nie benutzt, aber wenn das ergebnis ne zahl sein soll, dann sollteest du mal

echo (string)$out;

probieren
 
QUOTE (NullAhnung @ So 23.09.2012, 20:07) es kommt keine fehlermeldung aber auch kein ergebnis...

warum??

1.
Warum liest Du das Handbuch nicht?

http://php.net/manual/de/datetime.diff.php

dort steht das es erst ab PHP 5
hast Du PHP 5
ich hab hier auf Localhost (Mandriva 2007) wohl noch PHP4




2.
Wenn es funktionieren würde
dann müßten da DatumsStrings umgewandelt werden in einen Timestamp um dann zu subtrahieren
das dauert viel viel viel viel länger wie date(Z) oder date(O)
aber egal
wenn der Rechner zu langsam ist dann kauft man eben einen neuen
warum denn überlegen um durch besseren Code den Rechner 10mal schnelle zu machen
 
3.
so wie ich das im Handbuch lese
DATEdiff = Tage

Du willst aber doch einen
TIMEdiff = STunden
$TIMEdiff = date('Z', $ts) / 3600;
 
hallo...

QUOTE nullGelernt beim letzten Gespräch


doch schon viel gelernt...grins



QUOTE 2.
Wenn es funktionieren würde
dann müßten da DatumsStrings umgewandelt werden in einen Timestamp um dann zu subtrahieren
das dauert viel viel viel viel länger wie date(Z) oder date(O)


das ist ja mein problem.... der timestamp ist auf utc 0.... wie erzeuge ich einen timestamp auf lokale zeit um den unterschied raus zu bekommen....?

mit javascript ist es ja einfach alles

CODE <script <type="text/javascript">
var date = new Date();
var minutes = date.getTimezoneOffset();
document.write(minutes);
</script>



ist halt vom client... ich will halt noch zusätzlich genau das serverseitig haben....

aber ich habe jetzt nach geschaut.... ich habe noch php 5.2.4-2ubuntu5.18 muss erstmal updaten und dann wieder versuchen....
 
PHP => date_diff != DateDiff

ich würde da mal mit der suche anfangen.

und was mach "hh" in dem aufruf? ist das eine konstante? und wenn ja, wo definiert?

warum du keine fehlermeldung erhältst, liegt wahrscheinlich daran, dass du kein gescheites error_reporting eingestellt hast.
 
hallo wurzel....


hh soll stundenanzeige sein...aber abgesehen davon es funktioniert auch nicht ohne ....hab es vergessen rauszulöschen....
QUOTE PHP => date_diff != DateDiff

ich würde da mal mit der suche anfangen.



damit kann ich leider nichts anfangen...
 
QUOTE (NullAhnung @ Mo 24.09.2012, 10:59)
QUOTE nullGelernt beim letzten Gespräch


doch schon viel gelernt...grins

naja, da hab ich meine Zweifel



QUOTE (NullAhnung @ Mo 24.09.2012, 10:59) der timestamp ist auf utc 0.... wie erzeuge ich einen timestamp auf lokale zeit um den unterschied raus zu bekommen....?

Was ist utc0?
was hast Du?
was willst Du?

TimeStamp = das Ergebnmiss von Time()
das ist immer London, die Zeitzone kommt erst im date() dazu


was willst Du?
Du hast einen Deutschländer und einen Moscauer, die Zeitgleich etwas machen
was willst Du?
wissen wieweit die von London sind(zeitlich) oder willst Du wissen wie weit die 2 voneinander sind?


guckst DU altes gespräch
CODE
date_default_timezone_set('Europe/Berlin');
$ts=time();
$D=date('U d.m.Y H:i:s',$ts);
echo('<br>'.$D);



date_default_timezone_set('Europe/Moscow');
$ts=time();
$D=date('U d.m.Y H:i:s',$ts);
echo('<br>'.$D);



Du sagtest ja das Die Leute irgendwo angeben sollen in welcher Zeitzone sie sind

Entfernung nach London
(hie im Fred schon aufgezeigt)

CODE $TIMEdiff = date('Z', $ts) / 3600;


oder Entfernung zwischen 2 Usern

CODE
$ts1 = 1348497159;
$ts2 = 1348497159;
$tz1 = 'Europe/Berlin';
$tz2 = 'Europe/Moscow';

int function TIMEdiff( $ts1 , $tz1 , $ts2 , $tz2 )
{
date_default_timezone_set( $tz1 );
$ts1local= $ts1 + date('Z',$ts1);

date_default_timezone_set( $tz2 );
$ts2local= $ts2 + date('Z',$ts2);

if ( $ts1local > $ts2local )
$TIMEdiff = $ts1local - $ts2local;
else $TIMEdiff = $ts2local - $ts1local;

return($TIMEdiff);
}



So, jetzt haste ne Funktion für TIMEdiff

liefert Sekunden
DU willst Stunden

$TIMEdifStunden = TIMEdiff( $ts1 , $tz1 , $ts2 , $tz2 ) / 3600;
 
wir verstehen uns da völlig falsch....

von der userseite aus ist das alles kein problem.... ich speichere den timestamp ab + der differenz zwischen utc 0 also greenwich ohne sommerzeit... das krieg ich durch das javascript...
QUOTE <script <type="text/javascript">
var date = new Date();
var minutes = date.getTimezoneOffset();
document.write(minutes);
</script>


auf der serverseite möchte ich das gleiche haben (mal hingestellt ob es sinn oder unsinn macht), ohne irgendwelche Eingabe oder ähnliches....da es anscheinend keinen äquivaltenten befehl gibt... hab ich mir überlegt, dass ich diese differenz (egal ob in minuten, stunden) mit dem code ermittle...

QUOTE <?php
$date_server = date("Y-m-d H:i:s ",time());
$date_utc = gmdate("Y-m-d H:i:s ",time());

$out = DateDiff(hh,$date_server,$date_utc);
echo $out;
?>

ganz einfach... ich will keine timezonen oder ähnliches vorher definieren.... ich habe die beiden zeiten, die aus dem timestamp errechnet werden...und der unterschied ist die abweichung der zeitzone incl. sommerzeit, wenn diese zu der zeit war....

eigenltlich ganz einfach...
deshalb kann ich nicht mit timestamps rechnen, weil die zur gleichen zeit immer gleich sind....weil sie auf utc0 sich beziehen.... völlig unabhängig vom standort des servers etc...
 
QUOTE (NullAhnung @ Mo 24.09.2012, 17:53)wir verstehen uns da völlig falsch....

sicher sicher



QUOTE (NullAhnung @ Mo 24.09.2012, 17:53)von der userseite aus ist das alles kein problem.... ich speichere den timestamp ab

Was speicherst Du?
Wo speicherst Du?
Wie speicherst Du?



QUOTE (NullAhnung @ Mo 24.09.2012, 17:53)
ganz einfach...
eigenltlich ganz einfach...
ich will keine timezonen oder ähnliches vorher definieren..

date('Z')

aber nur wenn man will
 
QUOTE (NullAhnung @ Mo 24.09.2012, 17:53)
QUOTE <script <type="text/javascript">
var minutes = date.getTimezoneOffset();
document.write(minutes);
</script>


auf der serverseite möchte ich das gleiche haben (mal hingestellt ob es sinn oder unsinn macht), ohne irgendwelche Eingabe oder ähnliches....da es anscheinend keinen äquivaltenten befehl gibt...
hab ich mir überlegt,


CODE
int function getTimezoneOffset()
{
$offset = date( 'Z' );
return( $offset );
}
echo ( $sekunden = getTimezoneOffset() );



CODE
int function getTimezoneOffset()
{
$offset = date( 'Z' );
$offset /= 60;
return( $offset );
}
echo ( $minuten = getTimezoneOffset() );


 
Zurück
Oben