首页 > 编程技术 > php

PHP date()与time()获取时间与本地时间不一致

发布时间:2016-11-25 15:05

本文章来介绍PHP date()与time()获取时间与本地时间不一致解决办法,有需要的可参考参考解决办法

在程序中加入

在页头使用

 代码如下 复制代码

date_default_timezone_set()设置我的默认时区为北京时间
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s');

第一种解决方法:

在程序中设置默认时区。

 代码如下 复制代码

date_default_timezone_set('PRC'); //设置本地时区

第二种解决方法:

修改php.ini,将“date.timezone”项修改为“date.timezone = PRC”

大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
注:PRC是中华人民共和国

在php中时间日期的表达方式有很多种,最常用的是就是时间戳与普通的日期格式,下面我来介绍时间戳与日期之间的转换。

1.php中时间转换函数

strtotime

strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。

语法
strtotime(time,now)

 代码如下 复制代码

strtotime(“today”)

date

PHP Date() 函数可把时间戳格式化为可读性更好的日期和时间。

语法
date(format,timestamp)

 代码如下 复制代码

<?php
echo date("Y/m/d");
echo "<br />";
echo date("Y.m.d");
echo "<br />";
echo date("Y-m-d");
?>

把时间戳转换日期

 代码如下 复制代码

date("Y-m-d H:i",$unixtime)

2.php中获得今天零点的时间戳

要获得零点的unix时间戳,可以使用$todaytime=strtotime(“today”),

然后再使用date("Y-m-d H:i",$todaytime)转换为日期。

3.php中时间戳转换为日期,并按照时间显示不同的内容,如刚刚,分钟前,小时前,今天,昨天等

/*时间转换函数*/

 代码如下 复制代码

function transTime($ustime) {           

  $ytime = date("Y-m-d H:i",$ustime);             

  $rtime = date("n月j日 H:i",$ustime);           

  $htime = date("H:i",$ustime);           

  $time = time() - $ustime;           

  $todaytime = strtotime("today");           

  $time1 = time() - $todaytime;                           

  if($time < 60){                   

    $str = '刚刚';           

  }else if($time < 60 * 60){                            

    $min = floor($time/60);                   

    $str = $min.'分钟前';           

  }else if($time < $time1){                   

    $str = '今天 '.$htime;           

  }else{                   

    $str = $rtime;           

  }             

  return $str;

}

在这个函数中你可以添加更多的比较使显示的日期更加具体,比如添加 秒钟前,前天等更具体的日期。

4.php日期中补0与不补0

echo date('Y-m-d'); 显示2012-08-08

echo date('Y-n-j'); 显示2012-8-8

数组运算符(+)、字符串运算符(.)、逻辑运算符(&& AND || OR XOR)有需要的朋友可参考参考。

php数组运算符


$a + $b 联合 $a 和 $b 的联合。
$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE。
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE。
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE。

PHP 仅有的一个数组运算符是 + 运算符。它把右边的数组附加到左边的数组后,但是重复的键值不会被覆盖。

 代码如下 复制代码

$a = array("a" => "apple", "b" => "banana");
$b = array("a" =>"pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b;

var_dump($c);

执行后,此脚本会显示:

 代码如下 复制代码

array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}

数组中的单元如果具有相同的键名和值则比较时相等。


Example #1 比较数组

 代码如下 复制代码

<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

字符串运算符

有两个字符串运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数后

 代码如下 复制代码

<?php

echo "thr"."ee";           //prints the string "three"
echo "twe" . "lve";        //prints the string "twelve"
echo 1 . 2;                //prints the string "12"
echo 1.2;                  //prints the number 1.2
echo 1+2;                  //prints the number 3

?>

 代码如下 复制代码

<?php

 $a = '12345';

// This works:
 echo "qwe{$a}rty"; // qwe12345rty, using braces
 echo "qwe" . $a . "rty"; // qwe12345rty, concatenation used

// Does not work:
 echo 'qwe{$a}rty'; // qwe{$a}rty, single quotes are not parsed
 echo "qwe$arty"; // qwe, because $a became $arty, which is undefined

?>


逻辑运算符

下表逻辑运算符举例

$a and $b And(逻辑与) TRUE ,如果 $a 与 $b 都为 TRUE 。
$a or $b Or(逻辑或) TRUE ,如果 $a 或 $b 任一为 TRUE 。
$a xor $b Xor(逻辑异或) TRUE ,如果 $a 或 $b 任一为 TRUE ,但不同时是。
! $a Not(逻辑非) TRUE ,如果 $a 不为 TRUE 。
$a && $b And(逻辑与) TRUE ,如果 $a 与 $b 都为 TRUE 。
$a || $b Or(逻辑或) TRUE ,如果 $a 或 $b 任一为 TRUE 。

“与”和“或”有两种不同形式运算符的原因是它们操作的优先级不同。

 代码如下 复制代码

<?php

($a = $_GET['var']) || ($a = 'a default');

?>

 代码如下 复制代码

<?php

// 下面的 foo() 不会被调用,因为它们被运算符“短路”了。
$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 true
$f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]
var_dump($e, $f);

// "&&" 的优先级比 "and" 高
$g = true && false; // $g 被赋值为 (true && false),结果为 false
$h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]
var_dump($g, $h);
?>

以上例程的输出类似于:

bool(true)
bool(false)
bool(false)
bool(true)

cookie就像是php中的session一样,只是一个在客户端一个是在服务器端了,下面我来详细介绍php中setcookie对cookie设置与删除代码。

setcookie()语法

setcookie (PHP 3, PHP 4, PHP 5)

setcookie -- 发送一个 cookie 信息

说明:bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

写cookie

 代码如下 复制代码

<?php
$value = 'something from somewhere';

setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
?>

读cookie

 代码如下 复制代码

<?php
// Print an individual cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];

// Another way to debug/test is to view all cookies
print_r($_COOKIE);
?>


删除cookie

 代码如下 复制代码

<?php
// set the expiration date to one hour ago
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
?>


由于cookie与HTTP的特定方式,你必须在你输出任何文本前,传送出所有的cookie。否则PHP会给出警告,并且cookie也不会被传送。因此,这样做是正确的:

 代码如下 复制代码

<?php

setcookie(’name’, ‘jeff’);

echo “Hello Everyone!”;

?>

以下是错误地:

 代码如下 复制代码

<?php

echo “Hello Everyone!”;

setcookie(’name’, ‘jeff’);

?>

在php 中for循环与foreach是常用的两个函数,for是用于数字较多,而foreach一般用于数组遍历中。
 代码如下 复制代码

 

//php当前循环为1,循环由里到外依次递增,break默认为1,例如跳出第2层循环
for ($i=0;$i<3;$i++){
    foreach (array(1,2,3) as $val){    
        foreach (array(1,2,3) as $val){         
            echo "1层循环<br/>"; 
            break 2;  //跳出第2层循环        
        }
        echo "2层循环<br/>";
    }
    echo "3层循环<br/>";
}
//结果:
//1层循环
//3层循环
//1层循环
//3层循环
//1层循环
//3层循环

标签:[!--infotagslink--]

您可能感兴趣的文章: