PHP输出英文时间日期的安全方法(RFC 1123格式)


Posted in PHP onJune 13, 2014

最近项目中要为一个rest服务写客户端,其中的签名校验需要在HTTP Header中生成一个RFC 1123格式的Date。

这个问题比较好解决,简单翻阅了PHP文档,使用gmstrftime这个函数就能解决。

string gmstrftime ( string $format [, int $timestamp = time() ] )

调用的代码如下:
echo gmstrftime("%a, %d %b %Y %T %Z",time());
//输出:Tue, 01 Apr 2014 16:16:07 GMT

调试过程中发现,在另外一台电脑上,输出并不像预期中的结果,然后产生了中文:
二, 01  4 2014 16:20:02 GMT

继续翻阅文档,发现文档的注释中有说明,这个函数的结果受setlocale结果的影响,既收当前系统默认的语言的影响。使用下面的命令可以查看当前系统已安装的语言:
locale -a

那么根据刚刚分析的结果,将setlocale强制指定为英语就没问题了,代码如下:
setlocale(LC_TIME, 'en_US');
echo gmstrftime("%a, %d %b %Y %T %Z",time());

至此文章应该已经结束了,不过可惜的是测试用的Ubuntu机器上,因为是Live CD版,恰好没有en_US这个语言,但是有一个en_US.UTF-8。这个时候心理打鼓,这种做法似乎不太安全,我没办法确定运行代码的客户机上,到底有en_US还是有en_US.UTF-8。还好看到文档里的一段comments,可以用gmdate来代替,该函数不受setlocale结果的影响:
gmdate('D, d M Y H:i:s') . ' GMT';

Case closed~需求虽小,要写好并不容易,以后还要多加努力。
PHP 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
PHP下判断网址是否有效的代码
Oct 08 PHP
php5.3 注意事项说明
Jul 01 PHP
php数组中包含中文的排序方法
Jun 03 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
PHP命名空间用法实例分析
Sep 04 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
PHP中多维数组的foreach遍历示例
Jun 13 #PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 #PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 #PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 #PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 #PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 #PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 #PHP
You might like
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php输出xml属性的方法
2015/03/19 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
JS高级笔记
2011/07/13 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
介绍一些UNIX常用简单命令
2014/11/11 面试题
实习单位推荐信范文
2013/11/27 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
社区维稳工作方案
2014/06/06 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
应届生简历自我评价
2015/03/11 职场文书
上班迟到检讨书
2015/05/06 职场文书
田径运动会广播稿
2015/08/19 职场文书
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android