, datoer og tidspunkter - oop måde,,,,, 2,,,,,,,,, 9,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, den dato /tidspunkt php udvidelse er et sæt af klasser, der gør det muligt for dem at arbejde sammen med næsten hele den dato og tidspunkt - relaterede opgaver.det har været til rådighed siden løsladelsen af folkesundhedsprogrammet 5.2 og udvidelse, der blev indført flere nye klasser, som er planlagt til det virkelige liv scenarier:,,,,, en date eller en gang er repræsenteret ved et, datetime, objekt.,, en timezone i verden er repræsenteret af en, datetimezone, objekt.,,, dateinterval, objekter repræsenterer et interval.når vi for eksempel sige to dage fra nu af, "to dage" er det interval.det, dateinterval, objekt stoler ikke på en bestemt dato eller tid.,,, dateperiod, objekter repræsenterer en periode mellem to datoer.,,, lad ikke de to sidste røbe det, vi ser på verden, anvendelse af disse to i et øjeblik.,,,, date(),, datetime, når vi ønsker at vise en dato, vi anvendte, date(), det er simpelt, og det virker.du skal bare give den dato, format, du har brug for.men det er en rigtig smerte til at manipulere, et godt eksempel er formatering datoer og tidspunkter i henhold til en sædvane timezone.,, datetime gør mere end blot at vende tilbage til en selv, dato, men før vi går videre, du er nødt til at indlede en ny, datetime, objekt, der repræsenterer din dato og tid.så kan vi gøre alle mulige seje ting.et nyt eksempel er skabt lige som alle andre på klasse. $dato = nye datetime();,, konstruktøren af datetime accepterer en snor parameter, der misligholder sine forpligtelser, at "nu", på nuværende tidspunkt.at skabe et objekt for en bestemt dato, må man give den præcise dato og tid til det.formatering for parameter er selvforklarende i de fleste tilfælde.nedenfor kan du finde et par forskellige eksempler på, at din, datetime, formål:,, nye datetime ('2013, marts 24) //datetime for 2013, marts 24 nye datetime ('2013-03-24) //datetime for 2013, marts 24 nye datetime (+ 2 dage) //datetime repræsenterer 2 dage fra nu af.nye datetime ('tomorrow), når folkesundhedsprogrammet har svært ved at forstå det format, den vil gøre en undtagelse.A full list of the available formatting can be found in in the documentation, ,If there is no formatting that matches your needs, you can specify your own format by using ,DateTime::createFromFormat,, ,DateTime::createFromFormat('j-M-Y', '24-Mar-2013');, ,Now that we have a DateTime object in hand we can do whole bunch of stuff, rather easily., ,Unix Timestamp, ,$date->getTimestamp(); //returns a unix timestamp, ,Modifying Date/Times, ,$date->setDate(2013, 12, 30); //yyyy, mm, dd will set the the specified date $date->setTime(12, 3, 20); //hh, mm, ss (optional) will modify the time $date->modify('tomorrow'); //string based manipulation $date->setTimestamp(1364798550); //modify using a unix timestamp, ,Note that når uden for rækkevidde de værdier, der er fastsat under folkesundhedsprogrammet vil ændre datoen i overensstemmelse hermed.f.eks. $dato - > setdate (2013, 12, 35), vil skabe 2014-01-04, gælder det samme for tiden.,,, der arbejder med flere datoer, nu, at du er besat af datetime, den næste ting du ved, din apps vil blive fyldt med datetime objekter.vil du begynde at elsker datoer og tidspunkter, som aldrig før.fra nu af, vil du have at gøre med datetime genstande, ikke "strenge" at du er nødt til at gå til den, strtotime, funktion, når du har brug for lidt matematik.,, siger f.eks., at man skal sammenligne to fødselsdage:,, $sheldon = nye datetime (må 20, 1980). - neo = nye datetime ('march ellevte, 1962); hvis ($sheldon > $neo), echo "sheldon er yngre end neo ';,, et andet scenario kunne være at sammenligne to datoer.vi kan sammenligne datoer mod hinanden som så:,, $forsk = $neo - > forskel ($sheldon);,,, forsk, ring tilbage en dateinterval objekt.hvis vi smider ud tilbagevenden værdi:,, dateinterval objekt ([t] = > 18 [m] = > [d] = > 9 [t] = > 0 [i] = > 0 [s] = > 0 [122] = > 0 [dage] = > 6565), er de offentlige egenskaber.du kan få nogle venlige output fra en dateinterval objekt, - forsk - > format ('neo er ældre i% i år og% m måneder ældre); //neo er ældre fra 18 år og 2 måneder, hvad der er bedst for dateinterval formål er, at man kan anvende den pause en anden datetime objekt, $neo - > der tilsættes (% forskel); //neo fødselsdag ændret til sheldon er, note: ændringer i datetime, såsom at tilføje ikke tilbage nye datetime objekter, påvirker den oprindelige formål.altid huske på dette, når de passerer omkring datetime objekter i hele din app.php 5.5 indført en ny klasse, der kommer nye objekter ved ændringer.,,, forskel, ikke er det eneste sted, hvor du kan skabe en dateinterval objekt.da det er en klasse, nye objekter kan indledes som sædvanlig:,, $new_diff = nye dateinterval ('p2y "), og det antal år /måneder /dage osv., er vedtaget som en snor til entreprenøren.yderligere oplysninger kan findes i entreprenørens dokumentation.,,, der arbejder med timezones, ved at skabe nye datetime objekter, det andet argument af konstruktoeren definerer en timezone.hvis vi dropper en misligholdelse timezone vil blive taget fra, folkesundhedsprogrammet. ini, s. timezone,.du kan ændre det til runtime ved at kræve, date_default_timezone_set:,, date_default_timezone_set ('america /new_york); nye datetime (dag); //datetime objekt er i new york, kan man også ændre timezones, på et fly.som du nok har gættet, vi har brug for en timezone objekt. $timezone = nye datetimezone ('america /new_york) $sheldon - > settimezone ($timezone); //sheldons fødselsdag nu til new york, kan du definere timezone og samtidig skabe nye datetime genstand: - sheldon = nye datetime (må 20, 1980, $timezone), imidlertid et vigtigt at bemærke, at settimezone, ændrer den oprindelige datetime objekt.hvad vi beder: "format denne dato til denne timezone", når vi kalder, settimezone metode.nu, på den anden side, i det sidste eksempel, hvor vi passerer timezone i datetime konstruktør, vi siger, "den dato, jeg skaber er i denne timezone.", en liste over gyldige timezones er til rådighed i online - dokumentation.,,, dateperiods, tror jeg, den officielle vejledning giver den bedste forklaring:,,, en dato periode tillader følelser over en række datoer og tidspunkter, tilbagevendende med regelmæssige mellemrum, over et givet tidsrum.,,, dateperiod giver os mulighed for at skabe et sæt af datetimes ved hjælp af to dage, at vi definerer mellem et interval.vi vedtager en startdato, et interval og en slutning.hvert interval en ny datetime objekt er skabt, lad os sige, at vi ønsker at få alle sheldons fødselsdatoer, siden sin fødsel: //da fødselsdage finder sted hvert år, intervallet er et år, $interval = nye dateinterval ('p1y); //tredje argument er udløbet nye datetime() = = nu $periode = nye dateperiod ($sheldon, $interval, nye datetime()); for hvert ($periode som $dt) (//datetime objekter echo $dt - > format ('y-m-d - d '), "\\ n"), ville resultatet blive:,, 1981-05-20 - ons 1982-05-20 - thu 1983-05-20 - fre 1984-05-20 - sol 1985-05-20 - mon 1986-05-20 - tirs... nu ved misligholdelse, dateperiod, omfatter den dato, som vi vedtager i.men det fjerde argument om, at den pågældende giver os mulighed for at springe startdato:,, $periode = nye dateperiod ($sheldon, $interval, nye datetime(), dateperiod: exclude_start_date), lad os se, hvor mange fødselsdage, neo har haft før sheldon er født:,, $bdays = nye dateperiod (- neo - interval, $sheldon, dateperiod: exclude_start_date), echo iterator_count ($bdays);,,, at alle de klasser, som vi har i dag, kan udvides til også at omfatte anvendelse med dine egne metoder.en populær anvendelse er at udvide datetime med en, __tostring, metode, så du kan lave et ordentligt datetime formål uden at ringe, format,.,,, et par anvendelsesprofiler,,,,, en af mine personlige holdninger til ved hjælp af datetime objekter, er, når det drejer sig om dato /tidspunkt kolonner i databaser.alle datoer er opbevaret som utc timezone datoer.app - kode virker kun med datetime genstande, men inden udgangen spørgsmål opstår, alle de datoer er formateret til utc.denne tilgang har gjort det muligt for mig at arbejde med flere timezone input let.,, jeg kan bestå i en tid i new york til formål, og glemme alt om formatering, før de går til databasen.jeg kan nemt at skifte mellem unix - timestamps og regelmæssig dato tid formatering i min database, når som helst, min app kode er ligeglad, så længe det bliver en datetime objekt.,,, jeg har også brugt dateinterval at forenkle abonnement betaling logik.ved hjælp af dateinterval objekter til at definere den tid mellem abonnement har gjort det nemt for dig.jeg har bare brug for at anvende det interval for sidste betalingsfrist.,,, har du nogen god dato /tidspunkt, brug eksempler?del dem i bemærkningerne.,,, runde, den dato, tidspunkt udvidelse har så meget at tilbyde, hvis du er på blødning kant, der er nye klasser og grænseflader, der er indført siden php 5.5.sørg for at fjerne den manuelt.tak fordi du læste.
dato og tidspunkt
Previous:25 laravel tips og tricks