WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP Hjälp, Date och Time, addering (https://www.wn.se/forum/showthread.php?t=4008)

micze 2004-10-09 23:09

Ok jag behöver lite hjälp med PHP,
försöker att göra ett add värde på tid och datum,

så här e fallet i alla fall,
jag hämtar ett datum som e sparat i databasen,
sen vill jag att det ska gämnföra med ett värde av +14 dagar,
ex.

Kod:

$date = date("Y-m-d");
$nydate date("Y-m-d") + 14 dagar;

if ($date < $nydate) {
}


samma med fallet av tid.
en kompis förklarade för ett tag sen, glömde att skriva ner vad han sa :(

cornelii 2004-10-09 23:50

<?php

//Obs denna lösning år inte skottårs säker. Då blir det jobbigt ta fram böcker och sånt. Men det kan du kanske själv göra?
// Cornelii Sandberg
$futurum = 14;

if(date("m")%2 == 1 && date("m") <> 02)
{
if((date("d")+ $futurum) > 31 )
{
$dag = $futurum - (31 - date("d"));
$manad = date("m") + 1;
} else {
$dag = date("d")+14;
$manad = date("m");
}
}
if(date("m")%2 == 0 && date("m") <> 02)
{
if((date("d")+ $futurum) > 30 )
{
$dag = $futurum - (30 - date("d"));
echo (30 - date("d"))."
";
$manad = date("m") + 1;
} else {
$dag = date("d")+14;
$manad = date("m");
}
}
if(date("m") == 02)
{
if((date("d")+ $futurum) > 28)
{
$dag = $futurum - (28- date("d"));
$manad = date("m") + 1;
} else {
$dag = date("d")+14;
$manad = date("m");
}
}
echo $manad."-".$dag.";
?>

Mikael Simonsson 2004-10-10 01:51

Om jag har förstått dig rätt:

Kod:

<?php

// Från databasen:
$iOldDate = strtotime('2004-10-04 22:01');

// Nu + 14 dagar
$iNewDate = time() + (60*60*24*14);

if ( $iNewDate > $iOldDate )
{
  echo '...';
}

?>


kullervo 2004-10-10 19:25

Ett tips är att kolla i manualen. Funktionen date() kan nämligen ta emot ett till argument.

$datum = date("Y-m-d");
$om_två_veckor = date("Y-m-d", time() + 3600 * 24 * 14);

Jonas 2004-10-10 23:20

*SUCKAR*


Lär er PHP innan ni postar sjuk kod...

Kod:

$date = date("Y-m-d");
$nydate date("Y-m-d",strtotime('+2 week'));

if ($date < $nydate) {
}


kullervo 2004-10-11 00:27

Citat:

Originally posted by Jonas@Oct 10 2004, 23:20
*SUCKAR*


Lär er PHP innan ni postar sjuk kod...

Kod:

$date = date("Y-m-d");
$nydate date("Y-m-d",strtotime('+2 week'));

if ($date < $nydate) {
}


Ja, det är ju ännu en metod. Vad är det som är så tokigt att addera 2 veckor till now istället för att låta strtotime() addera 2 veckor till now?

micze: Spana in strtotime() också. Mycket kraftfull när man vill mecka med tid.

Jonas 2004-10-11 02:04

Citat:

Originally posted by kullervo@Oct 11 2004, 00:27
Ja, det är ju ännu en metod. Vad är det som är så tokigt att addera 2 veckor till now istället för att låta strtotime() addera 2 veckor till now?

micze: Spana in strtotime() också. Mycket kraftfull när man vill mecka med tid.

Kod:

$datum = date("Y-m-d");
$om_två_veckor = date("Y-m-d", time() + 3600 * 24 * 14);

Onödigt att beblanda det på det sättet när det finns funktioner till det.

Kod:

$date = date("Y-m-d");
$nydate date("Y-m-d",strtotime('+2 week'));

Enkelt, snabbt och gör PRECIS vad det skall göra.

cornelii 2004-10-11 08:20

Citat:

$nydate = date("Y-m-d",strtotime('+2 week'));
Lite enklare än min cp-lösning men som säkert framgår har jag inte råkat ut för speciellt många kalender uppdrag för då hade man behövt kolla upp det här.

Funkar ju bra med $nydate = date("Y-m-d",strtotime('+2 days')); oxå.

kullervo 2004-10-11 11:30

Det här svaret är helt principiellt.

Citat:

Onödigt att beblanda det på det sättet när det finns funktioner till det.
Jag förstår inte vad som är onödigt. Mitt sätt var ju "raka rör" istället för att blanda in nån funktion som kan räkna ut hur länge två veckor är (vilket jag lärde mig i förskolan så jag behöver inte hjälp med att räkna ut det). Du tog helt enkelt orden ur munnen på mig - Det borde ha varit jag som sa så.


Citat:

Kod:

$date = date("Y-m-d");
$nydate date("Y-m-d",strtotime('+2 week'));

Enkelt, snabbt och gör PRECIS vad det skall göra.

...plus lite till. Som sagt. Man behöver ingen mirakelfunktion för att räkna ut hur länge 2 veckor varar. Dessutom blir koden, förutom hälften så snabb, krångligare då man måste känna till vad strtotime() är. En person som inte känner till vad strtotime('+2 week') gör borde ju anta att den gör mycket mer än att bara adderar 2 veckor med now, eftersom personen tänker att "om det var så enkelt, varför inte bara addera 2 veckor utan någon specialfunktion?".

Mikael Simonsson 2004-10-11 20:34

Citat:

Originally posted by Jonas@Oct 10 2004, 23:20
*SUCKAR*

Lär er PHP innan ni postar sjuk kod...

Kod:

$date = date("Y-m-d");
$nydate date("Y-m-d",strtotime('+2 week'));

if ($date < $nydate) {
}


Jonas om du tycker vi postar sjuk kod så måste jag fråga varför du använder funktionen date()? date() returnerar en sträng, t.ex. '2004-10-11' (beronde på inparameter förstås). Det är samma sak som att skriva:

Kod:

if ( '2004-10-11' < '2004-10-25' )
{
 ...
}

Väldigt opålitligt med andra ord.

Det finns flera anledningar till att PHP använder timestamps (integer) internt, och en av dessa är effektivitet. Så min rekommendation till alla här är att jobba med timestamps istället, spara timestamps i databasen och konvertera till / från sträng endast när det är nödvändigt.

(Jonas detta är inget påhopp med att skriva en sån sak är bara onödigt.)


Alla tider är GMT +2. Klockan är nu 23:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson