0

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

需要进行为期 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

4 回答 4

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';
}
?>
于 2012-07-17T13:48:45.847 回答
2

你要

<?php
$today = date('Y-m-d')
if($today == $dateA) {
    echo 'todays message';
} else if($today == $dateB) {
    echo 'tomorrows message';
}
?> 
于 2012-07-17T13:51:15.160 回答
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">
于 2012-07-17T13:49:54.410 回答
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-16这将显示以下内容,因为现在是促销活动的第二天:

Today I should display a message for 2012-07-17 (1)
I would have displayed: the_second_image.jpg
于 2012-07-17T14:08:23.607 回答