首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断一个新的月份是否已经开始呢?php/mysql

问如何判断一个新的月份是否已经开始呢?php/mysql
EN

Stack Overflow用户
提问于 2012-09-10 12:50:43
回答 4查看 809关注 0票数 0

我将2010 -2040年的日期存储在mySQL表中,格式如下:

2012-01-02

我从表中选择每个日期,并在while - mysql_fetch_assoc循环中显示它们

代码语言:javascript
复制
while($row=mysql_fetch_array($result)){

    echo $row["date"];

}

我如何检查新的月份是否已经开始?我怀疑我需要使用explode()将当前月份计数器放在一个var中...但是,既然在while循环中var将被覆盖,那么如何进行比较呢

代码语言:javascript
复制
if(old month != new month){
    do something..
}

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-10 12:53:34

代码语言:javascript
复制
$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';
  }
}
票数 6
EN

Stack Overflow用户

发布于 2012-09-10 12:56:06

您可以使用date_parse将几乎任何日期格式解析为其组件。例如:

代码语言:javascript
复制
$date = date_parse("2012-01-02");
var_dump($date);

将输出:

代码语言:javascript
复制
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你的代码应该是这样的:

代码语言:javascript
复制
$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。

票数 1
EN

Stack Overflow用户

发布于 2012-09-10 12:56:12

如果你只需要月份,那么你不需要在php中分解日期格式,你可以在mysql查询中获得月份,如下所示

代码语言:javascript
复制
$query = "select month(date) as mont from table_name";

然后检查其他的东西..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12345489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档