Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在模式7中找到MySQL WEEK函数的PHP等价物?_Php_Mysql_Mode_Week Number - Fatal编程技术网

如何在模式7中找到MySQL WEEK函数的PHP等价物?

如何在模式7中找到MySQL WEEK函数的PHP等价物?,php,mysql,mode,week-number,Php,Mysql,Mode,Week Number,使用PHP,如何查找周数,其中: 一周的第一天是星期一, 第一周是今年第一周有周一, 范围是1-53? 我正在尝试实现与MySQL代码相当的PHP: SELECT WEEK(date('Y-m-d'), 7); 如本网站所示: 我试图用错误的语言MySQL实现的示例: $dbh = new PDO("mysql:host=localhost;dbname=test", "root", ""); $stmt = $dbh->prepare("SELECT WEEK('2012-12-30

使用PHP,如何查找周数,其中:

一周的第一天是星期一, 第一周是今年第一周有周一, 范围是1-53? 我正在尝试实现与MySQL代码相当的PHP:

SELECT WEEK(date('Y-m-d'), 7);
如本网站所示:

我试图用错误的语言MySQL实现的示例:

$dbh = new PDO("mysql:host=localhost;dbname=test", "root", "");

$stmt = $dbh->prepare("SELECT WEEK('2012-12-30', 7) as week");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "2012-12-30 = ".$result['week']."<br />";

$stmt = $dbh->prepare("SELECT WEEK('2012-12-31', 7) as week");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "2012-12-31 = ".$result['week']."<br />";

$stmt = $dbh->prepare("SELECT WEEK('2013-01-01', 7) as week");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "2013-01-01 = ".$result['week']."<br />";

$stmt = $dbh->prepare("SELECT WEEK('2013-01-06', 7) as week");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "2013-01-06 = ".$result['week']."<br />";

$stmt = $dbh->prepare("SELECT WEEK('2013-01-07', 7) as week");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "2013-01-07 = ".$result['week']."<br />";
我的尝试:使用正确的语言PHP,但结果错误

$date = new DateTime('2012-12-30');
echo "2012-12-30 = ".$date->format('W')."<br />";
$date = new DateTime('2012-12-31');
echo "2012-12-31 = ".$date->format('W')."<br />";
$date = new DateTime('2013-01-01');
echo "2013-01-01 = ".$date->format('W')."<br />";
$date = new DateTime('2013-01-06');
echo "2013-01-06 = ".$date->format('W')."<br />";
$date = new DateTime('2013-01-07');
echo "2013-01-07 = ".$date->format('W')."<br />";
我觉得我错过了一些基本的东西。在此方面的任何帮助都将非常感谢,并提前向您表示感谢

应该会帮助你。在您的情况下,这段代码应该满足您的要求:


strftime%V,strotime'2013-01-21'

基于ISO标准PHP是正确的。有关%V的更多信息是ISO对“周”的定义,这不是询问者想要的。有%U和%W可能生成预期的一周。我已尝试回显strftime%V,strotime'2013-01-01';但由于某种原因,我什么也得不到。然后我尝试了echo strftime%W,strotime'2013-01-01'和echo strftime%U,strotime'2013-01-01',但都给出了0,但我试图得到1。从那以后,我设法改变了需求,他们接受了ISO标准,这意味着不再需要,但问题仍然很有趣。
$date = new DateTime('2012-12-30');
echo "2012-12-30 = ".$date->format('W')."<br />";
$date = new DateTime('2012-12-31');
echo "2012-12-31 = ".$date->format('W')."<br />";
$date = new DateTime('2013-01-01');
echo "2013-01-01 = ".$date->format('W')."<br />";
$date = new DateTime('2013-01-06');
echo "2013-01-06 = ".$date->format('W')."<br />";
$date = new DateTime('2013-01-07');
echo "2013-01-07 = ".$date->format('W')."<br />";
2012-12-30 = 52
2012-12-31 = 01
2013-01-01 = 01
2013-01-06 = 01
2013-01-07 = 02