【问题标题】:How to fix date format in PHP Codeigniter如何在 PHP Codeigniter 中修复日期格式
【发布时间】:2019-06-09 10:00:12
【问题描述】:

Codeigniter 上使用PHPExcel 设置我的日期格式时遇到问题

我已经有你可以访问的控制器、模型和视图

型号:http://sistempintar.com/file/LingkunganModel.txt

控制器:http://sistempintar.com/file/Lingkungan.txt

查看:http://sistempintar.com/file/form.txt

我在导入数据库之前进行了预览,但是出现了一个错误提示

"遇到 PHP 错误,严重性:警告

消息:date_create():依赖系统的不安全 时区设置。您需要使用 date.timezone 设置 或 date_default_timezone_set() 函数。如果您使用任何 这些方法,您仍然收到此警告,您很可能 时区标识符拼写错误。我们选择了时区“UTC” 现在,但请设置 date.timezone 以选择您的时区。

文件名:Shared/Date.php

行号:167

回溯:

文件: /home/u4502442/public_html/sistempintar/demo/proyek/application/third_party/PHPExcel/PHPExcel/Shared/Date.php 行:167 函数:date_create

文件: /home/u4502442/public_html/sistempintar/demo/proyek/application/third_party/PHPExcel/PHPExcel/Style/NumberFormat.php 行:454 函数:ExcelToPHPObject

文件: /home/u4502442/public_html/sistempintar/demo/proyek/application/third_party/PHPExcel/PHPExcel/Style/NumberFormat.php 行:607 函数:_formatAsDate

文件: /home/u4502442/public_html/sistempintar/demo/proyek/application/third_party/PHPExcel/PHPExcel/Worksheet.php 行:2493 函数:toFormattedString

文件: /home/u4502442/public_html/sistempintar/demo/proyek/application/third_party/PHPExcel/PHPExcel/Worksheet.php 行:2556 函数:rangeToArray

文件: /home/u4502442/public_html/sistempintar/demo/proyek/application/controllers/Lingkungan.php 行:51 函数:toArray

文件:/home/u4502442/public_html/sistempintar/demo/proyek/index.php 行:315 功能:require_once"

这是我的 date.php:http://sistempintar.com/file/date.txt

这是显示错误的图片:

http://sistempintar.com/file/format_database.png

我不知道怎么回事,请帮忙

【问题讨论】:

  • In your php.ini configbefore you start calling 您的日期函数 set date.timezone to select your timezone 根据错误消息。
  • 你的意思是在我的 date.php 上?
  • 即使我将 date.timezone 设置为我的时区,错误仍然相同
  • 好的,您要修复什么错误?日期错误还是函数错误?
  • 当处理从excel(预览后)输入到数据库时,数据库上的日期将为0000-00-00的错误,但是当我尝试121212时,数据库上的日期将是2012/ 12/12

标签: php codeigniter phpexcel


【解决方案1】:

解决这个问题的方法是,我们必须使用 Format Cells 选项将日期格式从日期转换为数字,这样我们的日期就会在单元格上显示某种数字数据。

这是因为 Excel 使用简单的数字格式来读取日期,例如 1/1/1900 = 1.00 和 16/1/2012 = 40924.00。因此,每当我们必须使用 excel 上传日期时,我们必须将其转换为数字然后上传,并且在数据库的插入查询之前,我们使用下面列出的函数将数字格式转换为数据库支持的日期格式。

function excel_number_to_date($num)

{

$num=$num-25570; //this is because php date function work only for date after 1/1/1970

return addday(‘1970/01/02’,$num);

}

静态编号。 25570 表示日期为 1970 年 1 月 1 日。因为当我们在 MySQL 中上传数据时,它不会读取早于 1/1/1970 的日期。这就是为什么我必须减去这个特定的数字。 IT 完全取决于数据库的类型,下面列出了 addday 函数。

function addday($dat,$days) //$date will be in YYYY/mm/dd format

{

$dat=str_replace(“/”,”-“,$dat);

$dat=date(“Y-m-d”,strtotime($dat));

return date(“Y-m-d”,strtotime($days.’ days’,strtotime($dat)));

}

【讨论】:

  • 我可以把那个代码放在哪里?是啊,我明白了,因为当我像 1800 年 14 月 14 日这样输入数据库时​​没问题
  • 因为在数据库中,日期将是 0000-00-00,请帮助我
  • //this is because php date function work only for date after 1/1/1970 自 PHP5 早期以来一直不正确,即使在那时也只有在 Windows 上
  • 那么,我应该将 1970 更改为 1900 吗?只是它?
【解决方案2】:
date_default_timezone_set('Europe/Amsterdam');

你可以试试这行代码在 CodeIgniter 中设置你的时区。

您可以从here获取要使用的时区列表

【讨论】:

  • 没用,我已经设置了我的时区,什么都不给
【解决方案3】:

您需要更新您的 PHP 时区设置。在您的 php.ini 文件中,查找以下行: 日期.时区 = 并将其设置为您的时区。 您可以在此处找到支持的时区列表:here

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多