PHP在字符串转换时就像条件一样

时间:2012-11-04 23:44:11

标签: php datetime race-condition

我有一个非常奇怪的问题。

当我运行我的代码时,我收到一条错误消息,指出$carDay->date不是对象。但是当我在调试模式下运行它时,它工作正常。所以我认为这是一种竞赛条件。

$ trip是来自ORM数据库(MySQL)和getStart->的对象。只是一个以这种格式“20120929T024754”获取开始日期的getter。我将该字符串转换为日期,然后使用日期进行处理。但就像我说的那样,当我在没有调试的情况下运行它时,我想要访问它时似乎没有及时转换日期。有没有人知道为什么或我能做些什么呢?

 private function calculateIntLate($trip) {
    $carDay = $trip->getStart();
    $carDay_date = $this->convertStringToDateTime($carDay);

    $carDate = $carDay_date->date;
  }

  public function convertStringToDateTime($string) {
    //012345678901234 
    //20120929T024754
    $year = substr($string, 0, 4);
    $month = substr($string, 4, 2);
    $day = substr($string, 6, 2);
    $hour = substr($string, 9, 2);
    $minute = substr($string, 11, 2);
    $second = substr($string, 13, 2);
    $dateTime = new \DateTime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second);
    return $dateTime;
  }

2 个答案:

答案 0 :(得分:1)

你可能想要这个:

$carDate = $carDay_date->date;

$carDate = $carDay->date;

答案 1 :(得分:0)

确定,

我找到了答案here

显然你不能使用Datetime-> date属性