0

我有以下代码产生此错误:致命错误:调用第 58 行 C:\wamp\www\grid2.php 中非对象上的成员函数 setTimeZone()

我正在尝试设置此函数以接收如下日期字符串,应用时间偏移量,然后以函数调用中设置的格式将其输出回来......但没有运气。

<?php
if (!session_id()) session_start();
$_SESSION["timeoffset"] = "Europe/Amsterdam";


function formatDate($date, $format){
// use the the appropriate timezone for your stamp
$timestamp = DateTime::createFromFormat($format, $date, new DateTimeZone('UTC'));
// set it to whatever you want to convert it
$timestamp->setTimeZone(new DateTimeZone($_SESSION["timeoffset"]));
echo $timestamp->format($format);   
}

formatDate('2012-10-14T21:15', 'Y-m-d\TH:i');
?>

我还试图弄清楚如何以一定数量的分钟数返回字符串。

因此字符串“2012-10-14T21:15”将添加 5 分钟 =“2012-10-14T21:20”

任何帮助将不胜感激!

杰夫

4

2 回答 2

0

DateTime::createFromFormat将在失败时返回 false。这意味着:

DateTime::createFromFormat($format, $date, new DateTimeZone('UTC'));

失败并且 $timestamp 为假(var_dump($timestamp) 会告诉你)。在不知道您作为函数 formatDate 的参数传递的内容的情况下,我认为没有人能够准确地弄清楚您做错了什么。

于 2012-10-17T09:44:34.153 回答
0

而是使用这个

$timestamp->setTimeZone(new DateTimeZone("Europe/Amsterdam"));

我认为sessions数组没有返回字符串Europe/Amsterdam

进行调试

于 2012-10-17T09:47:01.287 回答