相关疑难解决方法(0)

PHP(5.3+)中的\(反斜杠)有什么作用?

\在PHP中做什么?

例如,CSRF4PHP\FALSE,\session_id\Exception:

public function __construct($timeout=300, $acceptGet=\FALSE){
    $this->timeout = $timeout;
    if (\session_id()) {
        $this->acceptGet = (bool) $acceptGet;
    } else {
        throw new \Exception('Could not find session id', 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

php namespaces opcode opcache

150
推荐指数
4
解决办法
5万
查看次数

为什么0000-00-00 00:00:00返回-0001-11-30 00:00:00?

事先,我已经读过这个问题:

如何防止PHP将带有0000-00-00值的DateTime对象转换为-0001-11-30

但是当我运行这段代码时,我不知道为何 00:00:00更改为-0001-11-30 00:00:00:

$date = date_create('0000-00-00 00:00:00');
echo date_format($date, 'Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

当我用0001-00-00 00:00:00尝试时,我得到:

0000-11-30 00:00:00
Run Code Online (Sandbox Code Playgroud)

和0001-01-01 00:00:00我得到:

0001-01-01 00:00:00
Run Code Online (Sandbox Code Playgroud)

和0000-00-01 00:00:00:

-0001-12-01 00:00:00
Run Code Online (Sandbox Code Playgroud)

是否有任何具体原因导致它在不存在的日期之前总是一年/一天/一个月?

函数date_createdate_format有问题吗?

我注意到时间以正确的方式显示,这可能是因为时间00:00:00存在.

php date

14
推荐指数
2
解决办法
7518
查看次数

尝试更改Carbon created_at日期的格式时,Laravel"发现意外的数据"错误

当我尝试修改我的资源模型的默认created_at字段的格式时,我收到以下错误:

{  
   "error":{  
      "type":"InvalidArgumentException",
      "message":"Unexpected data found.
                 Unexpected data found.
                 The separation symbol could not be found
                 Unexpected data found.
                 A two digit second could not be found",
      "file":"\/var\/www\/html\...vendor\/nesbot\/carbon\/src\/Carbon\/Carbon.php",
      "line":359
   }
}
Run Code Online (Sandbox Code Playgroud)

以下是产生上述错误的代码:

$tile = Resource::with('comments, ratings')->where('resources.id', '=', 1)->first();
$created_at = $tile->created_at;
$tile->created_at = $created_at->copy()->tz(Auth::user()->timezone)->format('F j, Y @ g:i A');
Run Code Online (Sandbox Code Playgroud)

如果我->format('F j, Y @ g:i A')从上面的代码中删除它,它工作正常,但它不是我想要的格式.问题是什么?我的应用程序中的其他地方几乎完全相同的代码,它可以正常工作.

更新: 使用setToStringFormat('F j, Y @ g:i A')不会导致错误,但会返回null.

laravel-4 php-carbon

10
推荐指数
3
解决办法
4万
查看次数

如何在PHP的DateTime中启用对Leap Seconds的完整UTC支持?

我想DateTimeLeap Seconds进行一些计算,但是它很早就停止了,因为我听不懂DateTime我的意思:

### June 30, 2012 at 23:59:60 UTC ###

$leap = new DateTime('2012-06-30T23:59:60UTC');
var_export($leap);
Run Code Online (Sandbox Code Playgroud)

输出:

DateTime::__set_state(array(
   'date' => '2012-07-01 00:00:00',
   'timezone_type' => 3,
   'timezone' => 'UTC',
))
Run Code Online (Sandbox Code Playgroud)

我无法为DateTime去年的UTC leap秒创建一个(我尝试过的其他leap秒也无法创建)。我想知道是否完全DateTime支持leap秒,我以为它支持UTC,但可能不支持leap秒,所以仅支持GMT吗?

php datetime leap-second

5
推荐指数
1
解决办法
1145
查看次数

如何处理返回'-0001-11-30 00:00:00'的MySQl null日期

当我的MySQl日期为空时,PHP将它们返回为"-0001-11-30 00:00:00".

我知道这是因为我正在使用欧洲时区,但我该如何处理呢?

我一直在:

InvalidArgumentException in Carbon.php line 425:
Unexpected data found.
in Carbon.php line 425
at Carbon::createFromFormat('Y-m-d H:i:s', '-0001-11-30 00:00:00') in Model.php line 2915
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

米克

注意:这不同于: 你如何解释新的\ DateTime('0000-00-0000:00 00:00')的结果?

这是不同的,因为我问我应该怎么做.

php mysql laravel php-carbon

5
推荐指数
1
解决办法
1624
查看次数

如何在PHP中正确设置"0000-00-00 00:00:00"为DateTime

我有一个列viewedAt是a DATETIME并接受NULL值.在每条新记录上设置该列是一个软件限制,0000-00-00 00:00:00因此我使用Symfony和Doctrine进行简单的操作,如下所示:

$entEmail = new Email();
$entEmail->setViewedAt(new \DateTime('0000-00-00 00:00:00'));
Run Code Online (Sandbox Code Playgroud)

但令人惊讶的是PHP改变了这个日期-0001-11-30 00:00:00,MySQL服务器中的SQL模式设置为STRICT,因此查询失败.我已阅读主题的LOF这里这个,这个和其他一些,但没有回答我的疑问都没有.我已经用PHP做了一些测试,我得到了几乎相同的结果:

$date = new DateTime("0000-00-00 00:00:00", new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d h:i:s');

// outputs
// -0001-11-30 12:00:00
Run Code Online (Sandbox Code Playgroud)

即使设置了MySQL模式,STRICT我也测试了以下查询,它的工作方式如下图所示:

INSERT INTO emails(`emails_category`, `deliveredAt`, `viewedAt`, `data`, `createdAt`, `updatedAt`, `reps_id`, `targets_id`) VALUES ("sent","2015-10-29 06:08:25","0000-00-00 00:00:00",null,"2015-10-29 06:08:25","2015-10-29 06:08:25","005800000058eYcAAI","0018000001GO8omAAD")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,viewedAt在接受0000-00-00 00:00:00该值,即使是无效的(我认为这是一种空左右)

我怎么解决这个问题?有什么工作吗?在这个软件要求无法更改的特定情况下,您对我提出了什么建议?

我正在使用Symfony 2.7.6,Doctrine 2.5.2和PHP 5.5.30

php datetime symfony doctrine-orm

2
推荐指数
1
解决办法
5807
查看次数