我需要在PHP脚本中比较(实际排名/排序)日期.日期是ISO-8601日期格式即
YYYY-MM-DD
我写了一个比较函数,它分割日期并按年/月/日进行比较.但是,这似乎有点矫枉过正,我可以轻松地做一个简单的字符串比较,如:
if ($date1 < $date2)
// do something
elseif( $date1 > $date2)
//do something else
else
//do yet another thing
Run Code Online (Sandbox Code Playgroud)
我的假设是关于(ISO-8601)日期字符串比较是否正确 - 即我可以摆脱我的功能(在服务器上保存几个时钟周期),还是明确更安全地在自定义函数中进行比较?
chx*_*chx 20
http://en.wikipedia.org/wiki/ISO_8601#General_principles
日期和时间值按从最重要到最不重要的方式进行组织:年,月(或周),日,小时,分钟,秒和秒的分数.因此,表示的字典顺序对应于时间顺序,除了涉及负年份的日期表示.这允许日期自然地按例如文件系统排序.
继续进行字符串排序.如果维基百科还不够,那肯定是http://www.ietf.org/rfc/rfc3339.txt,在那里搜索strcmp.
如果您将日期转换为DateTime对象(通常可从PHP 5.2+获得),则无论格式如何,您都可以可靠地使用比较.
$date = new DateTime("YYYY-MM-DD");
$date2 = new DateTime("YYYY-MM-DD");
if ($date > $date2) .....
Run Code Online (Sandbox Code Playgroud)
如果您有两个 ISO 8601 格式的日期,那么是的,您可以将它们作为字符串进行比较。此解决方案具有最佳性能:
Test name Repeats Result Performance
string 10000 0.031393 sec +0.00%
strcmp 10000 0.040579 sec -29.26%
strtotime 10000 0.149791 sec -377.15%
DateTime 10000 0.184489 sec -487.68%
Run Code Online (Sandbox Code Playgroud)
测试源在这里。
| 归档时间: |
|
| 查看次数: |
6850 次 |
| 最近记录: |