在python中我可以做
import datetime
print datetime.datetime.now().strftime('%Y-%m-%d')
# prints `2014-06-27`.
同样,在node.js中:
console.log(new Date().toDateString());
// Fri Jun 27 2014
当我在php中尝试相同的操作时:
<?php
print date('Y-m-d');
?>
我得到这个
警告:date():依赖系统的时区设置是不安全的。要求使用日期。时区设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,那么您很可能拼错了时区标识符。我们现在选择了UTC时区,但请设置日期。Timezone选择您的时区。在…
这条消息背后的基本原理是什么?为什么不使用python或node呢?使用系统时区究竟有哪些"不安全"之处?
因为有很多关于这个错误的帖子,请仔细阅读:我不是问如何修复它(非常明显),我想知道为什么我首先得到这个消息。
PHP
传统上用于web开发,因此一个合理的原因是web服务的消费者不会与服务器托管所在的时区处于同一时区,并且可能配置为(就系统时间而言)。
在系统用户看到客户端正确时间的上下文中,该警告是有意义的。
这里有一些讨论,其中提到了我上面给出的理由。来自同一页面的另一个理由,来自一个可能是PHP语言开发人员的人。
不-你,作为一个管理员,需要做出一个明智的决定你想要的时区。虫子太多了报告中人们毫无头绪,所以现在我们发出警告。
读完这个线程后
http://grokbase.com/t/php/php-internals/135qbh5twa/date-timezone-e-warning-really-necessary-whats-the-rationale我明白这个警告没有有效的技术原因。唯一的原因是php组的某个人认为减少bugs.php.net上的bug报告数量可能会很有用。所以基本上是magic_quotes
之类的