PHP如果基于当前系统日期

时间:2012-07-17 13:45:01

标签: php

尝试根据用户日期/时间设置自动更新的页面。

需要运行促销2周,每天需要更改显示的图像。 正在阅读http://www.thetricky.net/php/Compare%20dates%20with%20PHP以更好地处理php的时间和日期函数。测试有点棘手,但我基本上一直坚持:

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

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

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

4 个答案:

答案 0 :(得分: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';
}
?>

答案 1 :(得分:2)

你想要

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

答案 2 :(得分: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">

答案 3 :(得分: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