strtotime() 时区警告.在具有UTC时区的MySQL数据库中存储简单的Unix时间戳



这是我得到的警告:

PHP 警告: strtotime(): 依赖系统的时区设置是不安全的。您需要使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了其中任何一种方法,但仍然收到此警告,则很可能拼写错了时区标识符。我们在第 38 行的/data1/home/spaceweather/Scripts/casesFiles_InsertIntoDataBase.php 中选择了"美国/芝加哥"作为"CST/-6.0/无夏令时"

这是我用于在脚本中设置时区的代码。

我正在尝试消除 PHP 警告并将其指定为 UTC 到 strtotime(),而不是我系统上时区的默认时区。(附言去黑鹰!

$year = substr($filePath[$row], -17,4);  //where this outputs a simple year 'CCYY'
$day = $days2[$days2keys[$i]];           //where this provides the day of year
$format = 'Y-z';                          //specifying what format i'm creating the datetime with
$date = $year . '-' . $day;             //formatting the strings to the above $format
$timezone = new DateTimeZone('UTC');     //specify the timezone
$fileDateStore[$row] = DateTime::createFromFormat($format, $date, $timezone);  //create the DateTime object
$fileDateString[$row] = date_format($fileDateStore[$row],"Y-m-d".PHP_EOL);  //format it so strtotime() can read it
$fileDate[$row] = strtotime($fileDateString[$row]);  //finally create the Unix Timestamp for the date.

然后稍后,我使用以下代码将其存储到数据库中:

//connect to the database
$con=mysqli_connect("server","database","username","password");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
for($j = 1; $j < $numrows; $j++) {
    $date = $fileDate[$j]; 
    mysqli_query($con,"INSERT INTO tablename (fileDate) 
    VALUES (".$date.")");
}
mysqli_close($con);
echo "task finished and database connection closed.".PHP_EOL;

编辑您的php.ini文件并添加类似于

date.timezone = America/Chicago

或者,可以在代码中使用 date_default_timezone_set() 函数:

date_default_timezone_set('America/Chicago');

有关有效值的列表,请查看 http://php.net/manual/en/timezones.php

相关内容

  • 没有找到相关文章

最新更新