Avatar billede dj-hupi Nybegynder
29. marts 2011 - 15:01 Der er 4 kommentarer

Dato problem -

Hejsa,

Jeg mangler noget hjælp til at et dato problem, som jeg snart er ved at opgive.

Det er en log hvor der skal søges i, hvis mine datoer (via POST) enten er lig med eller er inden for disse StartTm og EndTm skal jeg bruge de ArrayKeys til at søge videre i SOAP'en.
Forneden kan i se de dato perioder jeg kan søge inden i.

Array
(
    [0] => stdClass Object
        (
            [Id] => 11.03
            [StartTm] => 2011-03-01T00:00:00
            [EndTm] => 2011-04-01T00:00:00
        )

    [1] => stdClass Object
        (
            [Id] => 11.02
            [StartTm] => 2011-02-01T00:00:00
            [EndTm] => 2011-03-01T00:00:00
        )

    [2] => stdClass Object
        (
            [Id] => 11.01
            [StartTm] => 2011-01-01T00:00:00
            [EndTm] => 2011-02-01T00:00:00
        )

    [3] => stdClass Object
        (
            [Id] => 10.12
            [StartTm] => 2010-12-01T00:00:00
            [EndTm] => 2011-01-01T00:00:00
        )

    [4] => stdClass Object
        (
            [Id] => 10.11
            [StartTm] => 2010-11-01T00:00:00
            [EndTm] => 2010-12-01T00:00:00
        )

    [5] => stdClass Object
        (
            [Id] => 10.10
            [siSite] => 576871
            [StartTm] => 2010-10-01T00:00:00
            [EndTm] => 2010-11-01T00:00:00
        )

    [6] => stdClass Object
        (
            [Id] => 10.09
            [StartTm] => 2010-09-01T00:00:00
            [EndTm] => 2010-10-01T00:00:00
        )

    [7] => stdClass Object
        (
            [Id] => 10.08
            [StartTm] => 2010-08-01T00:00:00
            [EndTm] => 2010-09-01T00:00:00
        )

    [8] => stdClass Object
        (
            [Id] => 10.07
            [StartTm] => 2010-07-01T00:00:00
            [EndTm] => 2010-08-01T00:00:00
        )

    [9] => stdClass Object
        (
            [Id] => 10.06
            [StartTm] => 2010-06-01T00:00:00
            [EndTm] => 2010-07-01T00:00:00
        )

)

Nogen gode ideer til hvordan jeg med min Start og slut dato kan sorter i dem.
Avatar billede phillips Nybegynder
29. marts 2011 - 15:42 #1
Kan du ikke bare loope gennem dem og konvertere tiderne til unix-format?

$time = $_POST['time']; // i unix format
$keys = array();

foreach( $array as $key => $value )
{
  $StartTm = mktime( 0, 0, 0, substr( $value->StartTm, 5, 2 ), substr( $value->StartTm, 8, 2 ), substr( $value->StartTm, 0, 4 ) );
  $EndTm = mktime( 0, 0, 0, substr( $value->EndTm, 5, 2 ), substr( $value->value->EndTm, 8, 2 ), substr( $value->value->EndTm, 0, 4 ) );
  if( $time > $StartTm && $time < $EndTm ) $keys[] = $key;
}

Ej testet, og det er bare et forslag ;-)
Avatar billede dj-hupi Nybegynder
29. marts 2011 - 17:00 #2
Hej,
Her er min vedhæftet kode:

            $StartTime = strtotime($_GET[fromdate]);
            echo "Start: ".$_GET[fromdate]." - ";
            $StopTime = strtotime($_GET[todate]);
            echo "Stop: ".$_GET[todate]."<br />";           
            for ($i = 0; $i < count($output->AlarmLogPeriodData); $i++) //hvis denne for loop skal bruges andre steder skal der laves en klasse som kan sørge for at lave den samlede log.
            {   
                echo $output->AlarmLogPeriodData[$i]->StartTm." - ";
                $StartTm = mktime( 0, 0, 0, substr( $output->AlarmLogPeriodData[$i]->StartTm, 5, 2 ), substr( $output->AlarmLogPeriodData[$i]->StartTm, 8, 2 ), substr( $output->AlarmLogPeriodData[$i]->StartTm, 0, 4 ) );
                  echo $StartTm ." - ";
                echo $output->AlarmLogPeriodData[$i]->EndTm." - ";
                  $EndTm = mktime( 0, 0, 0, substr( $output->AlarmLogPeriodData[$i]->EndTm, 5, 2 ), substr( $output->AlarmLogPeriodData[$i]->EndTm, 8, 2 ), substr( $output->AlarmLogPeriodData[$i]->EndTm, 0, 4 ) );
                  echo $EndTm ." - ";
                  if( $StartTime >= $StartTm && $StartTime <= $EndTm ) echo $i;
                 
                  echo "<br />";
            }

Jeg har her outputtet og der hvor der står 2 og 3 ud for er dem som den har valgt.
Den vælger åbenlyst ikke en slut dato som jeg også har:
Start: 2011-01-01 - Stop: 2011-03-28
2011-03-01T00:00:00(Normal start dato)- 1298934000(Unix start dato)- 2011-04-01T00:00:00(Normal slut dato)- 1301608800(Unix slut dato) -
2011-02-01T00:00:00 - 1296514800 - 2011-03-01T00:00:00 - 1298934000 -
2011-01-01T00:00:00 - 1293836400 - 2011-02-01T00:00:00 - 1296514800 - 2
2010-12-01T00:00:00 - 1291158000 - 2011-01-01T00:00:00 - 1293836400 - 3
2010-11-01T00:00:00 - 1288566000 - 2010-12-01T00:00:00 - 1291158000 -
2010-10-01T00:00:00 - 1285884000 - 2010-11-01T00:00:00 - 1288566000 -
2010-09-01T00:00:00 - 1283292000 - 2010-10-01T00:00:00 - 1285884000 -
2010-08-01T00:00:00 - 1280613600 - 2010-09-01T00:00:00 - 1283292000 -
2010-07-01T00:00:00 - 1277935200 - 2010-08-01T00:00:00 - 1280613600 -
2010-06-01T00:00:00 - 1275343200 - 2010-07-01T00:00:00 - 1277935200 -



Har du en løsning til at min dato (start og slut) vælger de rigtige?
2011-03-01 og 2011-02-01 burde også vælges.
Avatar billede PHPTECH Nybegynder
12. april 2011 - 22:43 #3
Hmmm, kan du ikke bare lave dit format om til "time" har ikke testet dit eks, klokken er mange og er på vej i seng, men vil umilbart tror du kan bruge strtotime( $myVar ); hvor den reture timestamp?
Avatar billede dj-hupi Nybegynder
01. november 2011 - 10:16 #4
Er i søde at komme med et svar så deler jer lige pointene ud :)

Jeg har fået det rettet :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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