我将2010 -2040年的日期存储在mySQL表中,格式如下:
2012-01-02
我从表中选择每个日期,并在while - mysql_fetch_assoc循环中显示它们
while($row=mysql_fetch_array($result)){
echo $row["date"];
}我如何检查新的月份是否已经开始?我怀疑我需要使用explode()将当前月份计数器放在一个var中...但是,既然在while循环中var将被覆盖,那么如何进行比较呢
if(old month != new month){
do something..
}谢谢
发布于 2012-09-10 12:53:34
$old_month = '';
while($row=mysql_fetch_array($result)){
list($year, $month, $day) = explode('-', $row["date"]);
if($old_month != $month) {
$old_month = $month;
echo 'new month';
}
}发布于 2012-09-10 12:56:06
您可以使用date_parse将几乎任何日期格式解析为其组件。例如:
$date = date_parse("2012-01-02");
var_dump($date);将输出:
array(12) {
["year"]=>
int(2012)
["month"]=>
int(1)
["day"]=>
int(2)
["hour"]=>
bool(false)
["minute"]=>
bool(false)
["second"]=>
bool(false)
["fraction"]=>
bool(false)
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
["is_localtime"]=>
bool(false)
}...and你的代码应该是这样的:
$month = false;
while( $row = mysql_fetch_array($result) ) {
$date = date_parse( $row["date"] );
if( $month != $date["month"] ) {
$month = $date["month"];
echo "month: {$month}<br />";
}
}你真的应该停止使用mysql_*函数,它们已经被弃用了。试一试mysqli_*或PDO,如果你不知道哪一个更合适,可以试试read this。
发布于 2012-09-10 12:56:12
如果你只需要月份,那么你不需要在php中分解日期格式,你可以在mysql查询中获得月份,如下所示
$query = "select month(date) as mont from table_name";然后检查其他的东西..
https://stackoverflow.com/questions/12345489
复制相似问题