thinpPHP问题餐厅

PHP中遇到的时区问题解决方法
投稿:hebedich
字体:[ ] 类型:转载 时间:
最近,在用PHP+MySQL编写一个小程序的时候,发现一个问题:录入数据库的时间与实际时间差8小时,这和中国位于的东8区是符合的。由于数据库时间是由PHP写入的,那问题就出现在PHP中了。
最近在学习PHP过程中发现PHP中的格式化时间戳比北京时间晚了8个小时,上网搜索发现原来是时区不对,解决办法是:
&&&& 1、永久修改
&&&&&&&&& 更改php.ini文件中的data.timezone = PRC& 这是中国时间。重启Apache服务后生效。
&&&& 2、临时修改
&&&&&&&&& 在使用格式化输入时间之前,添加ini_set('date.timezone','Asia/Shanghai');&&&&
&&&&&&&&& 或者data_default_timezone_set('PRC');//date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。
看看其他小伙伴遇到的问题
  之前有一个遗留问题,就是echo date("Y-m-d H:i:s",time())回来的时间总是与实际时间对不上,今天终于在网上找到了原因和解决方法,分享如下:
补充一点,按照下面提示的方法修改php.ini找不到date.timezone 这行,是不是就没办法了呢,当然不是啦,哈哈没有的话就自己加嘛,自己动手丰衣足食。加了这样一句date.timezone = "PRC",问题就搞定了,高兴
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。
1,最简单的方法就是不要用php5.1以上的版本
2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的上面加上 date_default_timezone_set (XXX);
3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
= 后面加XXX,重启http服务(如apache2或iis等)即可
关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
———————————————————————————————————————
解决方式: 在页头使用date_default_timezone_set()设置我的默认时区为北京时间 date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s'); 时间和服务器当前时间一样了!!祝贺之 附date_default_timezone_set用法如下
——————————–
date_default_timezone_set
(PHP 5 &= 5.1.0RC1)
date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区说明
bool date_default_timezone_set ( string timezone_identifier )
date_default_timezone_set() 设定用于所有日期时间函数的默认时区。
注: 自 PHP 5.1.0 起(此版本日期时间函数被重写了),如果时区不合法则每个对日期时间函数的调用都会产生一条 E_NOTICE 级别的错误信息。
以上所述上就是本文的全部内容了,希望大家能够喜欢。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具PHP 面试问哪些问题可以比较准确的反映出应聘者的开发水平? - 知乎951被浏览121280分享邀请回答写一个php脚本,抓取页面http://php.net/manual/en/langref.php右侧的目录列表.运行此脚本期望得到如下输出:
[ 13:44:30] fetching http://php.net/manual/en/langref.php
[ 13:44:31] parsing start
[ 13:44:32] the right side list is:
PHP Manual (http://php.net/manual/en/index.php)
Copyright (http://php.net/manual/en/copyright.php)
PHP Manual (http://php.net/manual/en/manual.php)
Getting Started (http://php.net/manual/en/getting-started.php)
Installation and Configuration (http://php.net/manual/en/install.php)
Language Reference (http://php.net/manual/en/langref.php)
Security (http://php.net/manual/en/security.php)
Features (http://php.net/manual/en/Features)
Function Reference (http://php.net/manual/en/funcref.php)
PHP at the Core: A Hacker's Guide (http://php.net/manual/en/internals2.php)
FAQ (http://php.net/manual/en/faq.php)
Appendices (http://php.net/manual/en/appendices.php)
[ 13:44:33] parsing end
[ 13:44:34] saving to file langref.txt
[ 13:44:35] saved
2. 创建一个数据库php_manual,新建表index,这个表有3个字段: id, title, link.
然后创建一个数据库用户php_manual_user,密码是php_manual_pass.
把上述数据库导出成sql,把SQL语句贴到下面,使得我们在mysql命令行终端里执行这些sql语句可以完成上述操作.
3. 写一个php脚本,读取第1题的结果langref.txt并解析出title和link,插入第2题创建的数据库表index里.
4. 使用jQuery写一个function来解析langref.php右侧的目录列表,运行这个function返回如下一个object.
"Copyright": "http://php.net/manual/en/copyright.php",
"PHP Manual": "http://php.net/manual/en/manual.php",
"Getting Started": "http://php.net/manual/en/getting-started.php",
"Installation and Configuration": "http://php.net/manual/en/install.php",
"Language Reference": "http://php.net/manual/en/langref.php",
"Security": "http://php.net/manual/en/security.php",
"Features": "http://php.net/manual/en/Features",
"Function Reference": "http://php.net/manual/en/funcref.php",
"PHP at the Core: A Hacker's Guide": "http://php.net/manual/en/internals2.php",
"FAQ": "http://php.net/manual/en/faq.php",
"Appendices": "http://php.net/manual/en/appendices.php"
5. 写一条shell命令,执行此命令可获取到http://php.net/manual/en/langref.php的内容并将页面里的所有大写的PHP转成小写,最后将结果保存到/tmp/langref.html里.
6. (加分题) 改写下边的脚本,使得当接收到SIGINT信号时打印出"caught signal SIGINT, exit"并退出.
while (1) {
echo "\n\n";
echo "I am doing something important\n";
echo "if i am interruptted, the data will be corrupted\n";
echo "be careful\n";
echo "\n\n";
7. (加分题) 有一个超级大的int数组要求和,假设有1000W,写一个php脚本,根据当前机器(假设是多核的)cpu的核数,fork出这么多子进程,把数组平分,每个子进程计算其中一部分,并把结果保存到/tmp/子进程pid.txt.
最后父进程汇总并输出求各结果.
=============================================================Update: 最后加上了基础题分析说明两年多之后,更新一下新的面试题.基础题场景:你入职了一家新公司.上班第一天,接待人给你安排好了座位,然后拉过来一台没拆封的新电脑.你把电脑连接好之后,按下电源....好吧,这真是一台新电脑,里边竟然内置了个DOS系统!!你找同事拿来了操作系统光盘/U盘(这个无所谓了).半个小时后,操作系统安装好了.第一件事就是要把LAMP环境搭建起来,这样才好工作.简述搭建LAMP环境过程中的注意点.LMAP环境搭建好之后,你拿到了第一个开发任务.给公司内部开发一个通用审批系统.公司内部有一个DNS服务器,上边已经配好了这个系统的域名,叫approving.,并指向了你本机的ip.
你尝试访问了一下
,出现了apache经典的It
Works页面,域名是生效的.你打算在桌面新建一个目录叫approving并在这个目录下完成这个系统的开发.如何配置apache使得访问的时候能够打开approving/index.phpapache配置好之后,你开始了开发工作.这时,同事给了你一份代码,是另一个人写了一半的通用审批系统.这下好多了,你不用从零开始写代码了.你翻看了他的代码,发现逻辑是这样的:
用户使用email和密码登录这个系统后,程序把这个用户的id放到了session里.通过$_SESSION['uid']就可以拿到登录用户id,然后去数据库里就能把这个用户的个人信息(比如叫什么名字,是哪个部门的)拿到了.接着,你找到了这个通用审批系统主要功能点的代码&form action="new-approving.php" method="post"&
审批事项: &input type="text" name="title" /&
详细描述: &textarea name="details"&&/textarea&
&input type="submit" value="提交" /&
include __DIR__ . '/conndb.php';
= $_POST['title'];
$details = $_POST['details'];
= md5(uniqid());
$db-&query("INSERT INTO approving(title, details) VALUES ('$title', '$details')");
$insertId = $db-&getLastinsertId();
$db-&query("INSERT INTO access(approving_id, access) VALUES ($insertId, $access)");
// 通知boss@审批
= 'boss@';
$subject = "请审批 $title";
= "$details\n&a href=\"approve.php?access=$access\"&快速审批链接&/a&";
include __DIR__ . '/lib/mail.php';
$mail = new Mail();
$mail-&addTo($to);
$mail-&setSubject($subject);
$mail-&setBodyHtml(nl2br($body));
$mail-&send();
header('Location: success.php');
看到这里,你大概看明白了.用户登录进来之后,提交一个表单,填写好要boss审批什么东西以及详细的描述,程序接收到提交数据后,除了把审批事项存放到approving表之外,还生成了一个access,发送给了boss,应该是boss在邮件里点击这个”快速审批链接”就不需要登录系统就直接把事项审批了.接着,你找到了approving.php的代码:&?php
include __DIR__ . '/conndb.php';
$access = $_GET['access'];
= $db-&query("SELECT approving_id FROM access WHERE access = '$access'");
if (!$row) {
die('No such access');
$approvingId
= $row['approving_id'];
$approvingRow = $db-&query("SELECT * FROM approving WHERE approving_id = $approvingId");
echo '&h3&审批事项: ', $approvingRow['title'], '&/h3&';
echo '&p&详细描述:&/p&';
echo '&p&', nl2br($approvingRow['details']), '&/p&';
echo "&a href=\"pass.php?access=$access\"&通过&/a&";
echo "&a href=\"deny.php?access=$access\"&拒绝&/a&";
Review上述三段代码,指出代码中存在的问题.4. 在你翻看完成了大部分代码之后,你发现里边有一个TODO尚未完成.
如果两天了boss还没有审批,那么系统就再发一封邮件催一下. 这个该怎么实现? 进阶题 有哪些得意之作? 是否实践过PHP编码规范? 如何做质量控制? 如何做测试? js命名空间的作用? 是否用过jslint? 是否写过jQuery
plugin?Linux使用多长时间了? 常用工具:
vim, grep, sed awk, wget, curl 写过哪些shell脚本? 做过服务器管理吗?接触到的Mysql数据库表最大是多少行记录? 使用哪种存储引擎? 出现性能瓶颈如何定位解决? MyISAM与InnoDB索引的区别?InnoDB的Primary
secondary Index有何区别?你手里有300W份简历的工作经历和教育背景?如何从中提取出学校/专业/公司?学习一个新框架如何入手?------------------------------------------------------------------------------------为什么我更新了面试题?招研发的必须实打实的上代码,我的确遇到了一些面试时回答问题还不错,一写代码让人头疼的工程师.所以招人时分了两个层次:1) 期望面试者入职工作后,代码写出来,一两天内能发布到线上.(对应基础题)2) 了解面试者对编程认知的广度和深度.(对应进阶题)基础题分析说明1. 搭建LAMP环境过程中,一定要把错误报警全都打开(安装了xdebug后,错误报警会更显眼,track_errors也很有用...)2. 会配虚拟主机3. Code Review.
首先,这三段代码均缺少权限判断.
第2段代码的问题:
1) 对提交过来的数据没有任何验证.
如果没有提交title字段,$_POST['title']就报undefined index了
如果title,details为空,或者过长都会有问题
2) 数据库操作部分有SQL注入
一个操作涉及到多个表时需要考虑事务的问题
第3段代码的问题:
1) 数据验证
2) SQL注入
3) XSS4. 写一个在CLI运行php程序,然后放入cronjob即可.
熟悉CLI环境还是需要的,让一个新人明白数据不一定是从他写的表单里提交过来的,好费劲.------------------------------------------------------------------------------------我觉得,如果一个应聘者能对如下关于LMAPJ(J指Javascript)方面的问题有自己的实战经验或者能提出解决方案的,都是可以考虑录用的。以下只是个人最近的一些思考,不见得合理,但是我会很愿意和能清楚解答如下问题的人在一起工作的。
======================================
# 编码规范
你在以前的项目中采用什么样的编码规范?
你对正则有多熟悉?在以前的项目中用过吗?用在哪些地方了?是自己写的,还是从网上找的?
以下是apache的一段访问日志,从中取出访问的站点名称,访问者ip (&del&访问时间,访问页面,访问者的客户端&/del&)
157.55.16.231 - - [25/Dec/:08 +0800] "GET /robots.txt HTTP/1.1" 200 394 "-" "Mozilla/5.0 ( bingbot/2.0; +)"
61.175.193.51 - - [25/Dec/:28 +0800] "GET /home/list HTTP/1.0" 302 399 "" "Mozilla/4.0 ( MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MASN)"
61.237.230.38 - - [25/Dec/:55 +0800] "GET /blog/archive/?year=2010 HTTP/1.1" 200 8467 "-" "Mozilla/4.0 ( MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; Tablet PC 2.0; InfoPath.3; MS-RTC LM 8; 360SE)"
# 开发过PHP的CLI程序吗?
# 你做的哪个东西自己都觉得自己很NB?
# 有哪些好书可以推荐一下吗?
## Book List
== Javascript ==
# 你是怎么接触并学习js的?
# 在团队中,采用什么机制来解决命名冲突的?
# 采用什么办法来保证代码质量的?
# 知道jslint吗?使用过吗?用多长时间了?怎么和日常的开发工作结合在一起的?
# jQuery熟吗?写过jQuery的插件吗?
# 有哪些好书可以推荐一下吗?
## Book List
& js语言精粹
& [JavaScript高级程序设计(第2版)].(美)泽卡斯
& High Performance JavaScript - Nicholas C. Zakas
== Linux ==
# linux熟吗?使用多长时间了?
# 常用工具: vim,grep,sed,awk,wget,curl...熟吗?
# 写过shell脚本吗?
# 管理过服务器吗?
# 有哪些好书可以推荐一下吗?
## Book List
& [sed与awk(第二版)].(美)多尔蒂,(美)罗宾斯
== Apache ==
# 会配置虚拟主机吗?有几种配置方法?(基于ip的,基于端口的,基于域名的,混杂的)
# 浏览器缓存是怎么使用的?(mod expires)
== MySQL ==
# 你接触到的最大的mysql数据库表是多大?(行记录数大概是什么量级的?)
# 使用的是哪种存储引擎(MyISAM, InnoDB, ...)
# 出现性能瓶颈时是如何解决的?
# 自己创建过索引吗?是怎么决定要在某些列上创建索引的?
# 关于索引,清楚MyISAM与InnoDB的区别吗? MyISAM的主键索引和其它索引有区别吗? InnoDB的主键索引和其它索引有区别吗?
# 有哪些好书可以推荐一下吗?
## Book List
& [MySQL技术内幕InnoDB存储引擎].姜承尧
& [高性能MySQL(第2版)中文版].施瓦茨
== 其它 ==
# 数据结构和算法怎么样?觉得有用吗?在什么地方用到了?有什么好书推荐一下吗?
# 除了PHP,还有哪门语言是你的强项,可以拿来用在production中的?
# 工作之余做过什么有意思的项目吗?
# 有好的技术博客推荐一下吗?
# csdn的用户名密码泄露出来一批,有643W多(其格式是username # password # email),现在想把它导到数据库里,你有什么办法?24737 条评论分享收藏感谢收起8013 条评论分享收藏感谢收起更多3 个回答被折叠()2017年1月 总版技术专家分月排行榜第三
2017年2月 PHP大版内专家分月排行榜第一2017年1月 PHP大版内专家分月排行榜第一
2013年5月 总版技术专家分月排行榜第一
2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
2017年1月 总版技术专家分月排行榜第三
2017年2月 PHP大版内专家分月排行榜第一2017年1月 PHP大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。最近在学习PHP过程中发现PHP中的格式化时间戳比北京时间晚了8个小时,上网搜索发现原来是时区不对,解决办法是:
& & &1、永久修改
& & & & & 更改php.ini文件中的data.timezone = PRC &这是中国时间。重启Apache服务后生效。
& & &2、临时修改
& & & & & 在使用格式化输入时间之前,添加ini_set('date.timezone','Asia/Shanghai'); & &&
& & & & & 或者data_default_timezone_set('PRC');//date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。
阅读(...) 评论()问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如题 今天突然想起来一个比较有意思代码片段
if($a=3 || $b=3){
运行结果当然是 1 1
但实质上 a 其实为true 然后 进行true++
于是做了一个测试 下面代码可以顺利通过
echo $c++;
但是 直接 echo true++
这样肯定是错误的,但是why?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
boolean 的递增/递减无效果。
为什么直接true++不行, 也许在逻辑上, 只有”变“量的递增/递减才有意义, 常量/布尔值在内存中都是单独的区域,无法去改动的。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
++和--运算符只能作用于变量。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
2++可以吗?
一样的道理。
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App}

我要回帖

更多关于 问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信