Avatar billede weisel Nybegynder
21. december 2009 - 11:47 Der er 11 kommentarer

PHP date / time

Hej

Jeg har en funktion i php "NOW()" som jeg smider ind i en mysql tabel. jeg skal lave det sådan at den runder op til nærmeste 15 minute interval.

nogen ideer ?
Avatar billede michael_stim Ekspert
21. december 2009 - 12:17 #1
<?php
$round_numerator = 60 * 15 // 60 seconds per minute * 15 minutes equals 900 seconds
//$round_numerator = 60 * 60 or to the nearest hour
//$round_numerator = 60 * 60 * 24 or to the nearest day

// Calculate time to nearest 15 minutes!
$rounded_time = ( round ( time() / $round_numerator ) * $round_numerator );

//If it was 12:40 this would return the timestamp for 12:45;
//3:04, 3:00; etc.
?>

Taget fra: http://www.php.net/manual/en/function.time.php
Og altså ikke testet.
Avatar billede michael_stim Ekspert
21. december 2009 - 12:31 #2
Testet (skulle bare ændre round til ceil):

$round_numerator = 60 * 15; // 60 seconds per minute * 15 minutes equals 900 seconds
//$round_numerator = 60 * 60 or to the nearest hour
//$round_numerator = 60 * 60 * 24 or to the nearest day

// Calculate time to nearest 15 minutes!
$rounded_time = ( ceil ( time() / $round_numerator ) * $round_numerator );
echo date('d-m-Y H:i:s', $rounded_time);
Avatar billede weisel Nybegynder
21. december 2009 - 12:32 #3
Hej Michael

min database har data gemt som "19:00:12", hvordan løser jeg det ?
Avatar billede michael_stim Ekspert
21. december 2009 - 12:37 #4
echo date('H:i:s', $rounded_time);
Avatar billede weisel Nybegynder
21. december 2009 - 12:49 #5
hej tak :) ja men den vil stadig ikke godkende værdien i min database, min mysql tabel står  til " TIME "  ?
Avatar billede michael_stim Ekspert
21. december 2009 - 13:05 #6
Kan jeg ikke hjælpe dig med. Der er ligesom ikke nogle oplysninger at arbejde med.
Avatar billede weisel Nybegynder
21. december 2009 - 13:17 #7
Jeg prøver lige at formulere mig lidt bedre, det må du undskylde:

Jeg sidder men en tabel opdelt i :DATE / TIME
f.eks. 2009-12-24 / 10:12:12
DATE er i " DATE " og Time er i "TIME"

$round_numerator = 60 * 15; // 60 seconds per minute * 15 minutes equals 900 seconds
$rounded_time = ( round( time() / $round_numerator ) * $round_numerator );
$testtime = date('H:i:s', $rounded_time);

som giver f.eks. 13:15:00. jeg prøver at bruge variablen i min INSERT statement :

$query_auto = "INSERT INTO $meeting (dp_name,dp_mdate, dp_mtime)
    VALUE ('$member',CURDATE(),$testtime)"

Dette giver en fejl, umiddelbart kan jeg ikke se hvorfor, udover måske at fordi mysql er sat til "TIME" ? har prøvet at sætte den til varchar, men hjælper ikke. any ideas?
Avatar billede michael_stim Ekspert
21. december 2009 - 13:32 #8
$query_auto = "INSERT INTO $meeting (dp_name,dp_mdate, dp_mtime)
    VALUE ('$member',CURDATE(),"'.$testtime.'")";
Avatar billede weisel Nybegynder
21. december 2009 - 13:38 #9
det hjalp jeg takker mange gange og giver dig points :)
Avatar billede michael_stim Ekspert
21. december 2009 - 13:41 #10
Ellers tak, samler ikke på point. Læg selv et svar og accepter.
Avatar billede weisel Nybegynder
21. december 2009 - 13:46 #11
okay , kunne du også svare på hvordan jeg nemmest laver en sum af tiden som ligger i $myarray, sådan at jeg kan regne f.eks. en løn ud ?

jeg har lavet array_sum , men det regner jo kun hele tal sammen ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester