Home > php教程 > php手册 > PHP生成RFC 1123格式的日期

PHP生成RFC 1123格式的日期

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-06 20:11:54
Original
2061 people have browsed it

最近项目中要为一个rest服务写客户端,其中的签名校验需要在HTTP Header中生成一个RFC 1123格式的Date。 这个问题比较好解决,简单翻阅了PHP文档,使用gmstrftime这个函数就能解决。 string gmstrftime ( string $format [, int $timestamp = time() ] ) 调

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

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

<code>string gmstrftime ( string $format [, int $timestamp = time() ] )
</code>
Copy after login

调用的代码如下:

<code>echo gmstrftime("%a, %d %b %Y %T %Z",time());
//输出:Tue, 01 Apr 2014 16:16:07 GMT
</code>
Copy after login

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

<code>二, 01  4 2014 16:20:02 GMT
</code>
Copy after login

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

<code>locale -a
</code>
Copy after login

那么根据刚刚分析的结果,将setlocale强制指定为英语就没问题了,代码如下:

<code>setlocale(LC_TIME, 'en_US');
echo gmstrftime("%a, %d %b %Y %T %Z",time());
</code>
Copy after login

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

<code>gmdate('D, d M Y H:i:s') . ' GMT';
</code>
Copy after login

Case closed~需求虽小,要写好并不容易,以后还要多加努力。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
php data acquisition?
From 1970-01-01 08:00:00
0
0
0
PHP extension intl
From 1970-01-01 08:00:00
0
0
0
How to learn php well
From 1970-01-01 08:00:00
0
0
0
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template