Kom ihåg mig?
Home Menu

Menu


PHP Hjälp, Date och Time, addering

 
Ämnesverktyg Visningsalternativ
Oläst 2004-10-09, 23:09 #1
micze micze är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 93
micze micze är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 93
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
micze är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-09, 23:50 #2
cornelii cornelii är inte uppkopplad
Read Only
 
Reg.datum: Mar 2004
Inlägg: 65
cornelii cornelii är inte uppkopplad
Read Only
 
Reg.datum: Mar 2004
Inlägg: 65
<?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.";
?>
cornelii är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-10, 01:51 #3
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
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 '...';
}

?>
Mikael Simonsson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-10, 19:25 #4
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
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);
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-10, 23:20 #5
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
*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 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-11, 00:27 #6
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
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.
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-11, 02:04 #7
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
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.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-11, 08:20 #8
cornelii cornelii är inte uppkopplad
Read Only
 
Reg.datum: Mar 2004
Inlägg: 65
cornelii cornelii är inte uppkopplad
Read Only
 
Reg.datum: Mar 2004
Inlägg: 65
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å.
cornelii är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-11, 11:30 #9
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
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?".
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-10-11, 20:34 #10
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 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.)
Mikael Simonsson är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 13:40.

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