2011-05-04 71 views
0

我是编码和PHP的世界的新手,并且被下面的代码中的'-01'做了些什么。PHP strtotime函数quandry

strtotime($someYear . '-' . $someMonth . '-01'); 
+2

参见:[日期和时间格式由'的strtotime所理解','date_create'和DateTime对象构造函数](http://us2.php.net/manual/en/datetime.formats.php)。 – Charles 2011-05-04 22:55:13

+0

清洁方法是'mktime(0,0,0,$ someMonth,1,$ someYear);' – 2011-05-04 22:56:14

+0

@Frank Farmer - 谢谢。为什么这被认为更清洁? – PeanutsMonkey 2011-05-04 23:03:16

回答

5

这是选择月的第一天。

.是PHP中的字符串连接运算符,PHP会自动将数字转换为字符串。

因此,让我们说你有:

$someYear = 2011; 
$someMonth = 5; 

而你要这个月开始的时间戳,你可以将其与做:

$someDate = $someYear . '-' . $someMonth . '-01'; // equivalent to "2011-5-01" 
strtotime($someDate); 

这是一个有点难看,但它的工作原理。

+0

@从此处 - 谢谢。但即使我没有说明,我仍然得到相同的结果。那么为什么要指定它? – PeanutsMonkey 2011-05-04 23:01:04

+0

@从此处 - 谢谢。这很清楚,为什么不把它写成 '$ someDate = $ someYear。 ' - '。 $ someMonth。 ' - '。'01';' '-01'使我感到困惑,少于1个月或一天等 – PeanutsMonkey 2011-05-04 23:05:48

+0

@PananutsMonkey,是的,这是一个快速和肮脏的方法。最好是明确你的格式,因为'strtotime'会猜测(当你没有指定日期编号时它是这样做的),但它可能会让你感到困惑。 – 2011-05-04 23:11:34

3

一天设置为在本月第一,也就是说,如果$ someYear是“1999年”和$ someMonth是“01”,这将产生

strtotime("1999-01-01"); 
+0

谢谢。类似于我从“从那里”问到的问题,为什么在排除它时得到相同的结果时指定它? – PeanutsMonkey 2011-05-04 23:07:33

+0

@PananutsMonkey - 你可以用多种形式写日期,即strtotime(“1999年1月的第一天”)也是有效的。看看更多的例子手册http://php.net/manual/en/function.strtotime.php – fredrik 2011-05-04 23:18:02