php中修改PHP的默认时区例子

 更新时间:2016年11月25日 17:05  点击:1810
在php中默认时区是欧美时区了,我们利用date函数获取到的日期是不正确的,如果我们要获取中国北京时间需要简单的设置默认时区才可以,具体操作按下文来操作吧。


每个地区都有自己的本地时间,在网上及无线电通信中,时间的转换问题显得格外突出。整个地球分为24个时区,每个时区都有自己的本地时间。在国际无线电或网络通信场合,为了统一起见,使用一个统一的时间,成为通用协调时(Universal Time Coordinated,UTC),是由世界标准设定的全球标准时间。UTC原先也被成为格林威治标准时间(Greenwich Mean Time,GMT),都与英国伦敦的本地时间相同。

PHP默认的时区设置是UTC时间,而北京正好位于时区的东八区,领先UTC8个小时。所以在使用PHP中time()等获取当前时间的函数,得到的时间总是不对,表现是和北京时间相差8个小时。如果希望正确显示北京时间,就需要修改默认的时区设置,可以通过以下两种方式完成。

①如果使用的是独立的服务器,有权限修改配置文件,设置时区就可以通过修改php.ini中的date.timezone属性完成。我们可以将这个属性的值设置为“Asia/Shang”、“Asia/Chongqing”、“Etc/GMT-8”或PRC等中的一个,再在PHP脚本中获取的当前时间就是北京时间。修改PHP的配置文件如下所示:
date.timezone = Etc/GMT-8                   //在配置文件中设置默认时区为东8区(北京时间)

②如果使用的是共享服务器,没有权限修改配置文件php.ini,并且PHP版本又在5.1.0以上,也可以在输出时间之前调用date_dafault_timezone_set()函数设置时区。该函数需要提供一个时区标识符作为参数,和配置文件中date.timezone属性的值相同。该函数的使用如下所示:

date_default_timezone_set(‘PRC’);        //输出时间之前设置的时区,PRC为中华人民共和国
echo date(‘Y-m-d H:i:s’,time());            //输出的当前时间为北京时间

3.使用php函数

如果你使用北京时间,就像这样就可以了。date_default_timezone_set("Asia/Shanghai");

例子,WAMP的默认时区

WAMP默认的时区是格林威治标准时间(GMT),这就意味着WAMP默认的服务器时区是GMT,但我们可以更改服务器默认时区,以对应北京时间。打开WAMP菜单中的php.ini,在文档最后添加如下代码即可:

[Date]
; Defines the default timezone used by the date functions
date.timezone = "Asia/Shanghai"

多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个上传文件域,我们可以手动进行修改,另外这个页面嵌套了 uploadFile.php 文件上传类,下面一起来看例子。

文件上传例子

 代码如下 复制代码

<?php
header('content-type:text/html;charset=utf-8');
require('uploadFile.php');

if(isset($_POST['submit'])){
$uploads = $_FILES['file'];
$num_file = count($uploads['name']);

$up = new UploadFile($uploads,'uploads',1024);
$num = $up->upload();

if($num == $num_file ){
echo '全部文件上传成功';
exit;
}else{
echo $num,'个文件上传成功<br/>';
echo $up->showErrorInfo();
exit;
}
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.111cn.net/ 1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<form action="uup.php" method="post" enctype="multipart/form-data">
<p><input name="file[]" type="file" /></p>
<p><input name="file[]" type="file" /></p>
<p><input name="file[]" type="file" /></p>
<p><input name="file[]" type="file" /></p>
<input name="submit" type="submit" />
</form>
</body>
</html>

文件上传类代码

 代码如下 复制代码

<?php
/*------------*/
class UploadFile
{
var $user_post_file  = array();
var $save_file_path  = '';
var $max_file_size   = '';
var $allow_type      = array('gif','jpg','png','zip','rar','txt','doc','pdf');
var $final_file_path = '';
var $save_info       = array();
var $error_info      = array();

/**
*构造函数,用于初始化信息。
*
*@param Array $file
*@param String $path
*@param Integer $size
*@param Array $type
*/
function __construct($file,$path,$size = 2097152,$type='')
{
$this->user_post_file   = $file;
$this->save_file_path   = $path;
$this->max_file_size    = $size;
if(!$type=''){
$this->allow_type[] = $type;
}
}

/**
*
*
*@access public
*@return int
*/
function upload()
{
for($i=0;$i<count($this->user_post_file['name']);$i++)
{
if($this->user_post_file['error'][$i] == 0){//上传文件状态正常
//获取当前文件名,临时文件名,大小,类型,扩展名
$name     = $this->user_post_file['name'][$i];
$tmp_name = $this->user_post_file['tmp_name'][$i];
$size     = $this->user_post_file['size'][$i];
$type     = $this->user_post_file['type'][$i];
$ext_name = $this->getExtName($name);

//文件大小
if(!$this->checkSize($size)){
$this->error_info[] = '您上传的文件:'.$name.'太大';
continue;
}
//扩展名
if(!$this->checkType($ext_name)){
$this->error_info[] = '您上传的文件:'.$name.'不合法';
continue;
}
//非法上传
if(!is_uploaded_file($tmp_name)){
$this->error_info[] = '您上传的文件:'.$name.'属于非法提交';
continue;
}

//
$basename = $this->getBaseName($name,".".$ext_name);
$final_filename = $basename.'-'.time().'-'.rand(1,10000).'.'.$ext_name;
$this->final_file_path = $this->save_file_path.'/'.$final_filename;

if(!move_uploaded_file($tmp_name,$this->final_file_path)){
$this->error_info = $this->user_post_file['error'][$i];
continue;
}

//
$this->save_info[] = array(
"name" => $name,
"ext_name" => $ext_name,
          "type" => $type,
                            "size" => $size,
"final_filename" => $final_filename,
                            "path" => $this->final_file_path
);
}
}

return count($this->save_info);
}

/*
 *检查用户上传文件的大小时候合法
 *
 *@param Integer $size
 *@access private
 *@return boolean
 */
function checkSize($size)
{
if($size > $this->max_file_size){
return FALSE;
}

return TRUE;
}

/*
 *检查用户上传文件的类型是否合法
 *
 *@access private
 *@return boolean
 */
function checkType($extension)
{
foreach($this->allow_type as $type){
if(strcasecmp($extension,$type) == 0){
return TRUE;
}
}

return FALSE;
}

/*
 *获取文件的扩展名
 *
 *@param string $filename
 *@access private
 *@return string
 */
function getExtName($filename)
{
$p = pathinfo($filename);

return $p['extension'];
}

/*
 *获取文件名(不包括扩展名)
 *
 *@param string $filename
 *@param string $type
 *@access private
 *@return boolean
 */
function getBaseName($filename,$ext_name)
{
$basename = basename($filename,$ext_name);

return $basename;
}

/*
 *
 *
 *
 */
function showErrorInfo()
{
if(count($this->error_info) != 0){
//echo 'error...<br/>';
foreach($this->error_info as $k=>$v){
echo ($k+1),':',$v,'<br/>';
}
}
}

function getSaveInfo()
{
return $this->save_info;
}
}

//$upload = new UploadFile('','');
//$upload = new UploadFile();
//$upload->showErrorInfo();

?>

计算PHP脚本执行时间我们会用到microtime函数了,主要原理是在页面开始与结束各加一个函数,然后利用结束时间减去开始时间就可以了,下文来给各位新手介绍一下。

在PHP中,大多数的时间格式都是以UNIX时间戳表示的,而UNIX时间戳是以s(秒)为最小的计量时间的单位。这对某些应用程序来说不够精确,所以可以调用microtime()返回当前UNIX时间戳和微妙数。该函数的原型如下:

mixed microtime([bool get_as_float]); //返回当前UNIX时间戳和微妙数

可以为该函数提供一个可选的布尔型参数,如果在调用时不提供这个参数,本函数以“msec sec”的格式返回一个字符串。其中sec是自UNIX纪元到现在的秒数,而msec是微妙部分,字符串的两部分都是以秒为单位返回的。如果给出了get_as_float参数并且其值等价于TRUE,microtime()将返回一个浮点数。在小数点前面还是以时间戳格式表示,而小数点后面则表示微妙的值。但要注意参数get_as_float是在PHP5.0版本中新加的,所以在PHP5以前的版本中,不能直接使用该参数直接请求一个浮点数。在下面的例子中通过两次调用microtime()函数,计算运行PHP脚本所需要的时间。代码如下所示:

 代码如下 复制代码
<?php
//生命一个计算脚本运行时间的类
class Timer{
private $startTime = 0; //保存脚本开始执行时的时间(以微秒的形式保存)
private $stopTime = 0; //保存脚本结束执行时的时间(以微秒的形式保存)
 
//在脚本开始处调用获取脚本开始时间的微秒值
function start(){
$this->startTime = microtime(true); //将获取的时间赋值给成员属性$startTime
}
//脚本结束处嗲用脚本结束的时间微秒值
function stop(){
$this->stopTime = microtime(true); //将获取的时间赋给成员属性$stopTime
}
//返回同一脚本中两次获取时间的差值
function spent(){
//计算后4舍5入保留4位返回
return round(($this->stopTime-$this->startTime),4);
}
}
 
$timer= new Timer();
$timer->start(); //在脚本文件开始执行时调用这个方法
usleep(1000); //脚本的主题内容,这里可以休眠一毫秒为例
$timer->stop(); //在脚本文件结束处调用这个方法
 
echo "执行该脚本用时<b>".$timer->spent()."</b>";
 
?>



在以上脚本中,声明一个用于计算脚本执行时间的类Timer。需要在脚本执行开始的位置调用该类中的start()方法,获取脚本开始执行时的时间。并在脚本执行结束的位置调用该类中的stop()方法,获取脚本运行结束时的时间。再通过访问该类中的spent()方法,就可以获取运行脚本所需的时间。

后面我又打到一个类,下面我们一起来看看吧

 代码如下 复制代码
**
 * 获取某段程序运行所用的时间
 *
 */
class runtime
{
 var $StartTime = 0;
 var $StopTime = 0;
 
 /**
  * 获取系统时间
  *
  * @return unknown
  */
 function get_microtime()
 {
  list($usec, $sec) = explode(‘ ’, microtime()); //取系统时间 前半部分是时间戳,后半部分是微妙部分
  return ((float)$usec + (float)$sec);
 }
 /**
  * 取程序开始时候的系统时间
  *
  */
 function start()
 {
  $this->StartTime = $this->get_microtime();  //程序开始的时候用这个方法取一次时间
 }
 /**
  * 取程序结束时候的系统时间
  *
  */
 function stop()
 {
  $this->StopTime = $this->get_microtime();   //程序结束的时候用这个方法取一次时间
 }
 /**
  * 计算出程序运行所用时间
  *
  * @return unknown
  */
 function spent()
 {
    // return round(($this->StopTime - $this->StartTime) * 1000, 1);
 
  return round(($this->StopTime - $this->StartTime), 4); //用结束时候的时间减去开始时候的时间,就是程序运行的时间了
 }
}
在php中日期对比用得比较多了,还有一个日期加减也用到不少,下面我拿两个例子来给大家介绍在php中日期操作方法吧,希望文章能给你带来帮助

功能需求


文章发布时段操作,要是在白天时间就可以发布,晚上则阻止。我们假设白天时间段从早上七点(七点估计好多人都没睡醒)到下午六点,那么我们可以这么下

 代码如下 复制代码

/**
 * PHP时间比较
 * 琼台博客
 */
// 定义开始时间,注意时间是字符串格式,所以必须用引号引起来否则报错别找我,另外里边的冒号必须是英文冒号
$start_time = '7:00';
 
// 定义结束时间,千万别问我下午六点为何写成十八点,我会建议你重读小学
$end_time  = '18:00';
 
// 获取现在时间段,date()函数的使用我就不废话了,不明白的直接看以往文章或者google
$now_time  = date('H:i');
 
// 判断
if( $start_time<=$now_time && $end_time-->=$now_time ){
     echo '我要发布信息啦!';
}else{
     echo '大哥,现在才几点啊~~~人家都还没睡醒呢!!!';
}

补充:日期加减方法

如:2012-04-25 10:10:00

我要在这个日期时间的基础上加上5个月并返回处理后的日期

结果:2012-04-25 10:10:00 加5个月等于 2012-09-25 10:10:00

结合PHP函数date()与strtotime()两个函数来实现大致也是这个意思,请看实例代码

 代码如下 复制代码

<?php
/**
 * PHP里的日期加减方法
 * 琼台老屋
 */
// 第一步,假设有一个时间
$a = '2012-04-25 10:10:00';
 
// 第二步,获得这个日期的时间戳
$a_time = strtotime($a);
 
// 第三步,获得加五个月后的时间戳
$b_time = strtotime('+5 Month',$a_time);
 
// 第四部,把时间戳转换回日期格式
$b = date('Y-m-d H:i:s',$b_time);
echo '这是加了五个月后的日期'.$b;
 
// 如果你觉得以上代码过长也可以一行搞定
$b = date('Y-m-d H:i:s',strtotime('+'.$time.' Month',strtotime($a)));
echo '这是加了五个月后的日期'.$b;
?>

上面的例子虽然说不上与文章第一个例子有什么关系,但我觉得日期比较与日期加减是可联系的。

对于重复数据我们多半会放到数据或数据库中然后进行删除或排除重复数据,下面我们来看一个简单的给数组去除重复数据的函数,有兴趣的朋友可进入参考。
 代码如下 复制代码

/**
 * 给数组排重
 * 与array_unique函数的区别:它要求val是字符串,而这个可以是数组/对象
 *
 * @param unknown_type $arr 要排重的数组
 * @param unknown_type $reserveKey 是否保留原来的Key
 * @return unknown
 */
static function m_ArrayUnique($arr, $reserveKey = false)
{
if (is_array($arr) && !empty($arr))
{
foreach ($arr as $key => $value)
{
$tmpArr[$key] = serialize($value) . '';
}
$tmpArr = array_unique($tmpArr);
$arr = array();
foreach ($tmpArr as $key => $value)
{
if ($reserveKey)
{
$arr[$key] = unserialize($value);
}
else
{
$arr[] = unserialize($value);
}
}
}
return $arr;
}
[!--infotagslink--]

相关文章

  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • c# 对CSV文件操作(写入、读取、修改)

    这篇文章主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下...2020-11-03
  • JS双击变input框批量修改内容

    这篇文章主要介绍了JS双击变input框批量修改内容的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-01-09
  • 使用phpMyAdmin批量修改Mysql数据表前缀的方法

    多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分。而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的...2015-10-21
  • php使用floor去掉小数点的例子

    floor会产生小数了如果我们不希望有小数我们是可以去除小数点的了,下面一聚教程小编来为各位介绍php使用floor去掉小数点的例子,希望对各位有帮助。 float floor (...2016-11-25
  • C#设置自定义文件图标实现双击启动(修改注册表)

    这篇文章介绍的是利用C#设置自定义文件图标,然后实现双击启动的功能,文章给出了示例代码,介绍的很详细,有需要的可以参考借鉴。...2020-06-25
  • 利用C#修改Windows操作系统时间

    这篇文章主要介绍了利用C#修改Windows操作系统时间,帮助大家更好的利用c#操作系统,感兴趣的朋友可以了解下...2020-12-08
  • mysql修改表结构方法实例详解

    本文实例讲述了mysql修改表结构方法。分享给大家供大家参考。具体如下:mysql修改表结构使用ALTER TABLE语句,下面就为您详细介绍mysql修改表结构的语句写法,希望对您学习mysql修改表结构方面能有所帮助。ALTER [IGNORE]...2015-10-21
  • C#实现appSettings节点读取与修改的方法

    这篇文章主要介绍了C#实现appSettings节点读取与修改的方法,是非常实用的技巧,需要的朋友可以参考下...2020-06-25
  • Mybatis批量修改时出现报错问题解决方案

    这篇文章主要介绍了Mybatis批量修改时出现报错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-10
  • 纯Css实现下拉菜单的简单例子

    下面我们来看一篇关于纯Css实现下拉菜单的简单例子,希望这篇文章能够给各位同学带来帮助,具体步骤如下. 大家可能会经常用到hover这属性,用hover实现鼠标经过的颜...2017-01-22
  • python批量修改交换机密码的示例

    这篇文章主要介绍了python批量修改交换机密码的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-09-22
  • JQuery EasyUI学习教程之datagrid 添加、修改、删除操作

    这篇文章主要介绍了JQuery EasyUI datagrid 添加、修改、删除操作的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-25
  • C#实现修改系统时间的方法

    这篇文章主要介绍了C#实现修改系统时间的方法,是一个非常实用的功能,需要的朋友可以参考下...2020-06-25
  • php时间日期对比与日期加减例子

    在php中日期对比用得比较多了,还有一个日期加减也用到不少,下面我拿两个例子来给大家介绍在php中日期操作方法吧,希望文章能给你带来帮助 功能需求 文章发布时段操...2016-11-25
  • php更新修改excel中的内容例子

    本例子不是读取Excel或生成新的Excel,而是读取现有的Excel文件,然后修改Excel中的数据,就像修改mysql中数据一样的哦。 代码如下 ...2016-11-25
  • php设置时区方法介绍

    php默认时区是欧美国家的所以与我们中国时区相差了整整8小时哦,下面我来给各位介绍php设置时区方法,有需要了解的朋友可进入参考。 在 php.ini 中,默认是 date.timez...2016-11-25
  • php正则获取文章内容中图片地址例子

    正则提取图片中的地址我们介绍过很多的相关文章了,下面再来给各位介绍一个可以提取内容中第一张图片的例子,希望对各位有帮助。 代码如下 复制代码 ...2016-11-25
  • php获取QQ头像并显示的例子

    最近看到博客留言的头像有点别扭,因为游客的头像都是同一个头像,看着不是很舒服。虽然现在绝大多数的主题集成了Gavatar头像功能,先不说gavatar被墙的问题,我自己现在都没...2016-11-25
  • 自动修改本机IP地址的bat代码

    这篇文章主要介绍了自动修改本机IP地址的bat代码,下面的代码因为时间问题暂时没有修复,但里面的一些判断还是值得学习的...2020-06-30