2012-07-17 81 views
0

尝试设置基于用户日期/时间自动更新的页面。PHP根据当前系统日期

需要运行一个促销2周,每天需要更改显示的图像。 正在读通过http://www.thetricky.net/php/Compare%20dates%20with%20PHP来得到关于PHP的时间和日期functions.Somewhat棘手的测试更好地处理,但我基本上就死在:

<?php 
$dateA = '2012-07-16'; 
$dateB = '2012-07-17'; 

if(date() = $dateA){ 
    echo 'todays message'; 
} 
else if(date() = $dateB){ 
    echo 'tomorrows message'; 
} 
?> 

我知道上面的函数是错误的,因为它的设置,但我认为它解释了我的目标。 时间无关紧要,它需要在午夜切换,所以日期会改变。

+0

'if'需要'=='或''===。你正在使用一个'='。它是否编译? – Lion 2012-07-17 13:50:57

回答

2

你似乎需要这样的:

<?php 
$dateA = '2012-07-16'; 
$dateB = '2012-07-17'; 

if(date('Y-m-d') == $dateA){ 
    echo 'todays message'; 
} else if(date('Y-m-d') == $dateB){ 
    echo 'tomorrows message'; 
} 
?> 
+0

+1,虽然你可能需要调用:'date('Y-m-d')'而不是 – 2012-07-17 13:49:52

+0

你是对的,修正了 – 2012-07-17 13:50:48

+0

$ today = date('Y-m-d');如果($今天=== $ dateA){}否则10天后你有PHP计算日期()10次;)编辑,DOH,bigkm说同样,对不起... – Cups 2012-07-17 14:14:53

0

我会去一步,通过文件名的处理。喜欢的东西:

<img src=/path/to/your/images/img-YYYY-MM-DD.jpg alt="alternative text"> 

所以,你的脚本会是这个样子:

<img src=/path/to/your/images/img-<?php echo date('Y-m-d', time()); ?>.jpg alt="alternative text"> 
+1

这是什么? – lusketeer 2012-07-17 13:50:34

+0

这是在特定日期显示图像的一种方法。 – PascalPrecht 2012-07-17 13:51:44

2

你想

<?php 
$today = date('Y-m-d') 
if($today == $dateA) { 
    echo 'todays message'; 
} else if($today == $dateB) { 
    echo 'tomorrows message'; 
} 
?> 
+0

谢谢,这应该是诀窍。 – RemeJuan 2012-07-17 14:48:58

0

如果你要做的日期计算,我推荐使用PHP的DateTime类别:

$promotion_starts = "2012-07-16"; // When the promotion starts 

// An array of images that you want to display, 0 = the first day, 1 = the second day 
$images = array( 
    0 => 'img_1_start.png', 
    1 => 'the_second_image.jpg' 
); 

$tz = new DateTimeZone('America/New_York'); 

// The current date, without any time values 
$now = new DateTime("now", $tz); 
$now->setTime(0, 0, 0); 

$start = new DateTime($promotion_starts, $tz); 
$interval = new DateInterval('P1D'); // 1 day interval 
$period = new DatePeriod($start, $interval, 14); // 2 weeks 

foreach($period as $i => $date) { 
    if($date->diff($now)->format("%d") == 0) { 
     echo "Today I should display a message for " . $date->format('Y-m-d') . " ($i)\n"; 
     echo "I would have displayed: " . $images[$i] . "\n"; // echo <img> tag 
     break; 
    } 
} 

鉴于推广上07-16this displays下面开始,因为它现在是促销的第二天:

Today I should display a message for 2012-07-17 (1) 
I would have displayed: the_second_image.jpg 
相关问题