[PHP] huidige datum in seconden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
Ik ben opzoek naar een eenvoudige manier om een date() met willekeurige argumenten compleet in seconden terug te krijgen.

Op php.net zijn veel datum / tijd functies terug te vinden, maar ik heb de functie die ik zoek niet kunnen vinden. Bestaat de functie die ik omschrijf wel, of zal ik alles met de hand moeten uitrekenen zoals :

PHP:
1
2
//huidige uur in seconden
echo date('H') * 60 * 60 ;

[ Voor 9% gewijzigd door aex351 op 30-11-2005 21:43 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 19-04 19:18
sorry maar wat wil je nou maken? tis nie echt duidelijk.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je wil de seconden sinds middernacht hebben? Volgens mij kan dat niet standaard, maar je kan eens in de manual kijken onder strftime, daar staan wel gekkere dingen tussen. Maar volgens mij kan het niet. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
Maxxi schreef op woensdag 30 november 2005 @ 21:43:
sorry maar wat wil je nou maken? tis nie echt duidelijk.
Ik ben opzoek naar een eenvoudige manier om een date() met willekeurige argumenten compleet in seconden terug te krijgen.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
mktime() geeft gewoon secondes terug hoor! dus daar kan je mee doen wat je wil.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Ik vermoed dat je dus wilt dat mensen opgeven dat ze iets 1 dag lang willen en dan dus 1day invullen ergens? Ik denk dat je dat zelf moet maken als je op steekwoorden wilt zoeken.

Anders heb je niet iets aan de time() functie?
PHP 3, PHP 4 , PHP 5)

time -- Geef de huidige UNIX timestamp
Beschrijving
int time ( void )
Retourneert de huidige tijd gemeten in het aantal seconden sinds de Unix Epoch (January 1 1970 00:00:00 GMT).

Maar misschien is dit het wel: http://nl3.php.net/manual/nl/function.strtotime.php
Tijd tenopzichte van nu in unix timestamp. Je zou dus kunnen kijken wat de tijd +1day is, dan rolt er een timestamp uit begrijp ik. Dan de huidige tijd van 0 eraf trekken. Dan houdt je over de +1day. Denk ik :P

edit:
maketime is sinds epoch. Dat is nog sneller. Als je gewoon invult 1 uur en alles verder 0 laat is het een uur sinds epoch. En dat wordt geteld in seconden, dus zou er 60*60 uit moeten komen denk ik. Niet getest :)

[ Voor 14% gewijzigd door pierre-oord op 30-11-2005 21:50 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Je kan toch de epoch van middernacht nemen en de epoch van je tijdstip en die van elkaar aftrekken?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
De reden waarom ik naar deze functie zoek is omdat ik het verschil van een oude tijd met een nieuwe tijd wil berekenen. Probleem waar ik tegen aanloop is dat wanneer ik ze bijvoorbeeld van elkaar aftrek er word gerekend met 100 , terwijl seconden 60 is.

Ik wil het resultaat netjes weergeven dus er is zoveel tijd verstreken 5UUR : 10 MIN : 5SEC.

Ik weet zeker dat dit mogelijk moet zijn met php, alleen ik lees eroverheen waarschijnlijk.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

Verwijderd

Idd je kunt toch gewoon tijd van nu time() <-- secondes aftrekken van een uur of twee uur terug of net wat.

<?php
time() - mktime(date("G")-2,0,0,date("m"),date("d"),date("Y"));
// Het verschil in secondes van een uur geledne zal dit in resulteren.
?>

[ Voor 14% gewijzigd door Verwijderd op 30-11-2005 22:09 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Epoch is juist in seconden, dus als je 2 datum/tijd variabelen omzet naar epoch en die van elkaar aftrekt heb je het verschil in seconden. Daar kan je verder naar hartelust dagen, uren, minuten en seconden van maken (gewoon delen en restwaarde onthouden).

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
Kom er vooralsnog niet uit , ik heb hieronder een kleine text voorbeeld opgeschreven, zou iemand met deze gegevens in php de voorbeeld kunnen geven.
code:
1
2
3
Oud    17:45:40 (uur:min:sec)
Nieuw 18:10:20 (uur:min:sec)
=: 25:40 (min:sec) verschil

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$epoch1 = mktime(17, 45, 40);
$epoch2 = mktime(18, 10, 20);

$diff = $epoch2 - $epoch1; // 1480 seconds

$hours = floor($diff / 3600);
$diff = $diff % 3600;

$minutes = floor($diff / 60);
$diff = $diff % 60;

$seconds = $diff;

echo $hours, ':', $minutes, ':', $seconds; // 0:24:40

En je mag zelf bedenken hoe je het oplost als je voorbij middernacht gaat ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
crisp schreef op woensdag 30 november 2005 @ 22:22:
PHP:
1
knip

En je mag zelf bedenken hoe je het oplost als je voorbij middernacht gaat ;)
Bedank voor het voorbeeld , ik weet hoe ik nu verder moet. En het middernacht probleem weet ik ook wel op te lossen.

Ik wilde alleen nog weten hoe ik van 1 -> 01 kan maken.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

Verwijderd

aex351 schreef op woensdag 30 november 2005 @ 23:02:

Ik wilde alleen nog weten hoe ik van 1 -> 01 kan maken.
Met behulp van printf, strftime, str_pad, strlen, strpos, of regular expressions (in mate van geschiktheid).

Jouw probleem is trouwens dat je geen gebruik weet te maken van de beschikbare documentatie. Het meeste van je vragen kun je gewoon opzoeken in de function reference. Gewoon even doorzetten.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
aex351 schreef op woensdag 30 november 2005 @ 23:02:
[...]

Ik wilde alleen nog weten hoe ik van 1 -> 01 kan maken.
sprintf() -> Example 7 zero-padding integers.

[ Voor 6% gewijzigd door Sybr_E-N op 30-11-2005 23:13 . Reden: /traag ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

str_pad is hier speciaal voor geschreven, sprintf dan weer niet. Geen idee wat sneller/performanter is trouwens, maar ik gebruik altijd str_pad. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
-NMe- schreef op woensdag 30 november 2005 @ 23:26:
[...]

str_pad is hier speciaal voor geschreven, sprintf dan weer niet. Geen idee wat sneller/performanter is trouwens, maar ik gebruik altijd str_pad. :)
Bedankt str_pad werkt super, een functie die mij nog nooit eerder is opgevallen B)

[ Voor 9% gewijzigd door aex351 op 01-12-2005 00:23 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op woensdag 30 november 2005 @ 23:26:

str_pad is hier speciaal voor geschreven, sprintf dan weer niet. Geen idee wat sneller/performanter is trouwens, maar ik gebruik altijd str_pad. :)
De printf functies hebben als voordeel dat je eenvoudig meerdere variabelen in een string kunt kwakken, en dat er automatisch type casting plaatsvindt wanneer dat nodig is. Het scheelt je soms wat controles, het is gewoon een soort zwitsers zakmes. En die functies zijn nog snel ook. Het printen van een paar variabelen in een string met printf is al sneller dan het concateneren van strings. Maar dit verschil zal je zelden veen winst opleveren. Ik geef dan meer om overzicht, en dat is ook goed mogelijk met die functies.
PHP:
1
printf ( '%02u:%02u:%02u', $hours, $minutes, $seconds );

Of
PHP:
1
2
3
4
5
printf ( '%02u:%02u:%02u',
   $hours,
   $minutes,
   $seconds
);

En dat is in mijn ogen veel overzichtelijker dan:
PHP:
1
echo str_pad ( $hours, 2, '0', STR_PAD_LEFT ), ':', str_pad ( $minutes, 2, '0', STR_PAD_LEFT ), ':', str_pad ( $seconds, 2, '0', STR_PAD_LEFT );

Of
PHP:
1
2
3
4
5
6
7
echo implode ( ':',
   array (
      str_pad ( $hours, 2, '0', STR_PAD_LEFT ),
      str_pad ( $minutes, 2, '0', STR_PAD_LEFT ),
      str_pad ( $seconds, 2, '0', STR_PAD_LEFT )
   )
);

Inderdaad, je moet even de syntax begrijpen, maar als je dat eenmaal doorhebt, stelt het niet veel meer voor.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
-NMe- schreef op woensdag 30 november 2005 @ 23:26:
[...]

str_pad is hier speciaal voor geschreven, sprintf dan weer niet. Geen idee wat sneller/performanter is trouwens, maar ik gebruik altijd str_pad. :)
Voor het formatteren van string gebruik ik over het algemeen (s)printf. Het is leuk om voor elk dingetje een andere functie te gebruiken, maar ik blijf het liefst consistent vandaar mijn keuze voor printf. (^^)

Acties:
  • 0 Henk 'm!

  • Coen Rosdorff
  • Registratie: Januari 2000
  • Niet online
crisp schreef op woensdag 30 november 2005 @ 21:48:
Je kan toch de epoch van middernacht nemen en de epoch van je tijdstip en die van elkaar aftrekken?
Er is maar 1 epoch toch? :)
Pagina: 1