Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > dk.edb.database > #1381
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Newsgroups | dk.edb.database |
| Subject | Re: PHP/MySQL problem med timestamp |
| Date | 2018-01-13 14:42 -0500 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <p3dnfb$lcl$1@gioia.aioe.org> (permalink) |
| References | <5a5a0fad$0$726$14726298@news.sunsite.dk> |
On 1/13/2018 8:54 AM, Dennis Munding wrote:
> Jeg er i gang med at lave en hjemmeside for nogle online-gamere og i
> den forbindelse, er jeg stødt på et "lille" problem.
>
> Ejeren af siden vil gerne have vist en fejring af "jubilæer" i klanen
> på siden. Ikke noget problem.
>
> Problemet består i, at han gerne vil have det vist på selve dagen og en
> uge frem.
> Det er "intervallet" af jubilæer, der knækker mig: 1, 3, 6, 9 og 18
> mdr. samt årligt.
> Havde det kun været årligt ville jeg nok selv kunne løse det, men jeg
> har fået stirret mig blind.
>
> Min php-kode til funktionen ser således ud:
> Det fungerer glimrende på selve dagen, som I kan se her -
> http://1dpb.dk/?side=test - men jeg kan ikke gennemskue, hvordan jeg
> får min "mission" til at lykkes...
>
> Indmeldelsestidspunktet ($indmeldt) indsættes som timestamp ved hjælp
> af strtotime() funktionen, hvis det er en hjælp.
>
> Alle konstruktive indspark (også til evt. optimering af ovenstående
> kode) modtages med taknemmelighed. :-)
Hvordan jeg ville angribe problemet:
<?php
class AnniversaryPolicyItem {
public $descrip;
public $interval;
public function __construct($descrip, $interval) {
$this->descrip = $descrip;
$this->interval = $interval;
}
}
class AnniversaryPolicy {
private $before;
private $after;
private $format;
private $annlist;
public function __construct($daysbefore, $daysafter, $format =
'd/m/Y') {
$this->before = new DateInterval('P' . $daysbefore . 'D');
$this->after = new DateInterval('P' . $daysafter . 'D');
$this->format = $format;
$this->annlist = array();
}
public function add($descrip, $interval) {
$this->annlist[] = new AnniversaryPolicyItem($descrip, new
DateInterval($interval));
}
public function getAnniversary($ts) {
$now = new DateTime();
$t1 = $now->sub($this->before);
$t1->setTime(0, 0, 0);
$now = new DateTime();
$t2 = $now->add($this->after);
$t2->setTime(23, 59, 59);
foreach($this->annlist as $annitem) {
$tsdt = new DateTime();
$tsdt->setTimestamp($ts);
$anntim = $tsdt->add($annitem->interval);
if($t1->getTimestamp() <= $anntim->getTimestamp() &&
$anntim->getTimestamp() <= $t2->getTimestamp()) {
return $annitem->descrip . ' ' .
$anntim->format($this->format);
}
}
return null;
}
}
function test($annpol, $ts) {
$ann = $annpol->getAnniversary($ts);
if($ann != null) {
echo "$ann\r\n";
} else {
echo "No anniversary\r\n";
}
}
$annpol = new AnniversaryPolicy(2, 2);
$annpol->add('1 year anniversay', 'P1Y');
$annpol->add('3 months anniversary', 'P3M');
$annpol->add('1 month anniversary', 'P1M');
test($annpol, time() - 28*24*60*60);
test($annpol, time() - 31*24*60*60);
test($annpol, time() - 34*24*60*60);
test($annpol, time() - 82*24*60*60);
test($annpol, time() - 92*24*60*60);
test($annpol, time() - 102*24*60*60);
test($annpol, time() - 255*24*60*60);
test($annpol, time() - 365*24*60*60);
test($annpol, time() - 375*24*60*60);
?>
Arne
Back to dk.edb.database | Previous | Next — Previous in thread | Next in thread | Find similar
PHP/MySQL problem med timestamp "Dennis Munding" <nospa@mplease.dk> - 2018-01-13 13:54 +0000
Re: PHP/MySQL problem med timestamp "Dennis Munding" <nospa@mplease.dk> - 2018-01-13 14:44 +0000
Re: PHP/MySQL problem med timestamp Arne Vajhøj <arne@vajhoej.dk> - 2018-01-13 14:42 -0500
Re: PHP/MySQL problem med timestamp "Dennis Munding" <nospa@mplease.dk> - 2018-01-15 16:41 +0000
Re: PHP/MySQL problem med timestamp Arne Vajhøj <arne@vajhoej.dk> - 2018-01-15 11:52 -0500
Re: PHP/MySQL problem med timestamp "Dennis Munding" <nospa@mplease.dk> - 2018-01-16 21:27 +0000
Re: PHP/MySQL problem med timestamp Arne Vajhøj <arne@vajhoej.dk> - 2018-01-16 19:56 -0500
Re: PHP/MySQL problem med timestamp Jan Hansen <jhjjhjhhansen@gmail.com> - 2018-01-17 03:26 +0000
Re: PHP/MySQL problem med timestamp Jan Hansen <jhjjhjhhansen@gmail.com> - 2018-01-17 04:32 +0000
Re: PHP/MySQL problem med timestamp (rettet udgave) Jan Hansen <jhjjhjhhansen@gmail.com> - 2018-01-17 04:42 +0000
Re: PHP/MySQL problem med timestamp "Dennis Munding" <nospa@mplease.dk> - 2018-01-17 10:15 +0000
Re: PHP/MySQL problem med timestamp Jan Hansen <jhjjhjhhansen@gmail.com> - 2018-01-17 12:28 +0000
Re: PHP/MySQL problem med timestamp "Dennis Munding" <nospa@mplease.dk> - 2018-01-20 14:27 +0000
csiph-web