php time()与date()时间与本地电脑有区别

 更新时间:2016年11月25日 17:38  点击:2133
经常会有同学问我为什么php time()与date()时间与本地电脑有区别呢,相关有几个小时啊,仔细计算有8小时之差了,这个就是php date_default_timezone_set时区设置问题了,我们只要简单设置即可。

Unix时间戳

如果date时间不一致可以使用date_default_timezone_set设置时区:

 代码如下 复制代码
<?php
date_default_timezone_set('Asia/Chongqing');
 
//获取当前时间
echo date('Y-m-d H:i:s',time());
echo "<br>";
 
//对当前时间进行计算
echo date('Y-m-d H:i:s',time()-600); //减10小时
echo "<br>";
 
//时间戳转时间
echo date('Y-m-d H:i:s',1364277600);
 
//时间转时间戳(仅精确到秒)
echo strtotime("2013-03-26 14:00");
echo "<br>";
 

?>

除了上面办法我们还可以在php.ini中设置一个时区,这们以后就不需要程序开加这date_default_timezone_set('Asia/Chongqing');了

 代码如下 复制代码

date.timezone = PRC

在php中为我们提供了几个字符截取函数,包括substr,mb_substr,mb_strcut函数,我们有些php初学者会利用substr来截取中文,结果发现中文会有乱码了,出现乱码我们可以使用mb_substr来解决。

文章页面的 description 是使用 substr 函数来截取220字符的,但是最后一个汉字总是乱码,而且截取出来的长度也不正确。

通过神奇的 Google 找到方法,可能是因为 substr(string,start,length),会将汉字以字符的形式截断,而造成乱码

解决方案:

使用 PHP 扩展库中的 mb_substr 方法。

注意

1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面。
2.在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到
;extension=php_mbstring.dll把前面的;号去掉,这样mb_substr函数就可以生效了


方法定义:

string mb_substr ( string str, int start [, int length [, string encoding]] )

注意:在使用 mb_substr()/mb_strcut 最后要加入多一个参数,以设定字符串的编码,

例如:

 代码如下 复制代码

echo mb_substr(‘原本会出现乱码的汉字!’, 0, 7, ‘utf-8′);

再如:

 代码如下 复制代码

$description = mb_substr(strip_tags($post->post_content),0,220,’utf-8′);

mb_strcut函数

mb_strcut函数功能也可以截取字符串长度,下面实例具体看看区别在哪:

 

 代码如下 复制代码

<?php
$str = '这样一来我的字符串就不会有乱码^_^';

echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8');
//结果:这样一来我的字
echo "<br>";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
//结果:这样
?>

从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

substr()函数中文版 普通的substr()函数可以取得字符串的指定长度子字符串,但遇到中文时可能会在新字符串末尾产生乱码,下面这个函数将超过$len长度的字符串转换成以“...”结尾,并且去除了乱码。
用法:$new = getsubstring($old,20);

 代码如下 复制代码
function getsubstring($str,$len)
{
for($i = 0;$i <$len;$i++)
{
   if ($i >=0 AND $i <$len)
   {
    if(ord(substr($str,$i,1)) > 0xa1)
     $result_str.=substr($str,$i,2);
    else
     $result_str.=substr($str,$i,1);
   }
   if(ord(substr($str,$i,1)) > 0xa1)
    $i++;
}
if(strlen($str)<=$len)
   return $result_str;
else
   return $result_str."...";
}
在利用php解析xml时提示Invalid byte 1 of 1-byte UTF-8 sequence错误了,这个问题我百度查实说是编码问题,结果我把编码处理一下果然KO了,下面我来分享一下解决办法。

错误提示

Invalid byte 1 of 1-byte UTF-8 sequence

原因分析

在中文版的window下java的默认的编码为GBK,也就是所虽然我们标识了要将xml保存为utf-8格式但实际上文件是以GBK格式来保存的,所以这也就是为什么能够我们使用GBK、GB2312编码来生成xml文件能正确的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因。


把xml的encoding属性值UTF-8改为UTF8

org.xml.sax.SAXParseException: Content is not allowed in trailing section

把先要解析和字符串trim()一下即可解决问题。

解决:

1、最简单就是把<?xml version="1.0" encoding="UTF-8"?>改成<?xml version="1.0" encoding="gbk"?>

2、或者把xml打开另存的时候把字符集改为UTF-8后保存

或改程序

 代码如下 复制代码

 SAXReader reader = new SAXReader(); 
  org.dom4j.Document document = reader.read("D:\ha.xml"); 
  OutputFormat of = new OutputFormat(); 
  of.setEncoding("UTF-8"); //改变编码方式 
XMLWriter writer = new XMLWriter(new FileWriter "d:\dom4j.xml"), of); 


我使用的是eclipse编辑器如下操作即可

可以在Eclipse中更改,在 eclipse 的功能表 [Project]→[Properties],?? [Resources],在右?的「Text file encoding」,把原?硎窍到y??的??,改? 「UTF-8」。

今天换了一个服务器运行php久了就会发现Fatal error: Allowed memory size of 33554432 bytes exhausted提示了,下面我来给大家介绍此问题解决地。

解决办法


方法一(推荐)、修改 php.ini 里的 memory_limit 的设置值 8M 改为 120M:memory_limit = 120M

方法二、在最上层的 PHP Script,加入一行:ini_set("memory_limit","120M");


我使用的是否wordpress博客,我的解决办法有点不同,下面也分享一下。

1、网络办法,据说这个适用3.0以前的版本。编辑wp-config.php这个文件,添加

 代码如下 复制代码

define(‘WP_MEMORY_LIMIT’, ’64M’);

64M可以更高。可以96M、128M。

2、3.0以后的版本,要修改源文件,介意的就不用改了。在wp-includes目录下找到default-constants.php文件中的以下的代码

 代码如下 复制代码

global $blog_id;

// set memory limits
if ( !defined('WP_MEMORY_LIMIT') ) {
if( is_multisite() ) {
define('WP_MEMORY_LIMIT', '64M');
} else {
define('WP_MEMORY_LIMIT', '32M');
}
}

第二行 define(‘WP_MEMORY_LIMIT’, ’32M’); 变64M即可。

phpmyadmin超时或响应慢的原因我分析有两种,超时就是设置时间不够,默认为1800秒了,而反应慢估计是phpmyadmin自动检查更新导致的,下面我来具体解决一下操作方法。

今天安装了最新版的phpmyadmin,安装好了测试了一下,发现间或的反应超慢,查看了nginx的日志,是报fastcgi连接超时。然后打开fastcgi的慢日志,发现如下错误:

[10-May-2013 11:15:16] [pool www] pid 10992 script_filename = /usr/share/nginx/html/phpmyadmin-1688/version_check.php [0x0000000002902e78] file_get_contents() /usr/share/nginx/html/phpmyadmin-1688/version_check.php:240

问题明显了,是phpmyadmin不断地进行版本的检查更新,而国内的服务器连接phpmyadmin服务器又是超慢的,且还有可能无法连接,所以导致了超时的现象。
解决方法:
编辑version_check.php文件,在

 代码如下 复制代码

<?php:
下面添加

exit;

保存测试,响应慢的问题解决了。

下面来看第二个问题,就是phpmyadmin超时问题


phpMyAdmin的默认超时时间是1800秒,太短了

开发过程中写几行代码回来一看数据库就超时了,

反复登录很烦人。

修改方法:

打开   phpMyAdmin/libraries/config.default.php

找到$cfg['LoginCookieValidity'] = 1440; 行

把1440调大一些就ok了

[!--infotagslink--]

相关文章

  • mysql_connect与mysql_pconnect的区别详解

    在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25
  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • .NET/C# 使用Stopwatch测量运行时间

    这篇文章主要介绍了.NET/C# 使用Stopwatch测量运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#中out与ref的区别实例解析

    这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • 谈谈Jquery中的children find 的区别有哪些

    精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21
  • JavaScript时间操作之年月日星期级联操作

    这篇文章主要介绍了JavaScript时间操作之级联日期选择操作,涉及到年、月、日、星期,感兴趣的小伙伴们可以参考一下...2016-01-18
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • postgresql 中的时间处理小技巧(推荐)

    这篇文章主要介绍了postgresql 中的时间处理小技巧(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-29
  • 从chrome调试工具中把拖延时间的东西找出来

    我打开android开发手册的时候:http://www.csdn123.com/html/android/reference/packages.html 发现打开速度很慢,我用按了一下F12打开调试面板,切换到网络的选项卡network...2016-05-19
  • C# 当前系统时间获取及时间格式详解

    这篇文章主要介绍了C# 当前系统时间获取及时间格式详解的相关资料,这里提供代码实例,帮助大家学习参考,需要的朋友可以参考下...2020-06-25
  • oppo r9s怎么连接电脑 oppo r9s正确连接电脑方法教程

    OPPO R9s怎么打开USB调试连接电脑呢?安卓手机要连接电脑,就必须先激活开启USB调试模式,不过基于Android 6.0深度定制的ColorOS 3.0系统默认usb调试是隐藏的,初次开启需要...2016-12-21
  • 帝国CMS显示指定时间内更新的信息数量

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 帝国CMS显示指定时间内更新的信息数...2016-11-01
  • C#使用TimeSpan时间计算的简单实现

    这篇文章主要给大家介绍了关于C#使用TimeSpan时间计算的相关资料,以及通过一个实例代码给大家介绍了C#使用timespan和timer完成一个简单的倒计时器的方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧...2020-06-25
  • php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法

    php获取今日开始时间戳和结束时间戳$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;//php获取昨日起始时间戳和结束时间...2013-10-04
  • C#获取文件创建时间的方法

    这篇文章主要介绍了C#获取文件创建时间的方法,涉及C#文件操作的技巧及CreattionTime属性的使用方法,需要的朋友可以参考下...2020-06-25