繁体   English   中英

今天的strtotime

[英]strtotime of today

你好,我想找到今天和另一个约会之间的区别,

将今天的日期转换为unix时间格式

 <?php
    echo '1st one'.strtotime(date("d.m.Y")).'<br>';
    echo '2nd one'.strtotime(date("m.d.Y")).'<br>';
    ?>

第一个回声产生一些价值,但不是第二回声。 它有什么错误...请帮忙..

strtotime根据您提供的日期格式进行假设。 例如

date("Y-m-d", strtotime(date("d.m.Y"))) //=> "2010-09-27"
date("Y-m-d", strtotime(date("m.d.Y"))) //=> "1969-12-31"

请注意,当给定无效日期时,strtotime默认为1969-12-31 19:00:00的时间戳,因此当您在1969年结束意外日期时,您知道您正在使用无效日期。

因为strtotime正在寻找day.month.year当你使用. 作为分隔符,它将“9.27.2010”视为第27个月的第9天,显然不存在。

但是,如果将其更改为使用/作为分隔符:

date("Y-m-d", strtotime(date("d/m/Y"))) //=> "1969-12-31"
date("Y-m-d", strtotime(date("m/d/Y"))) //=> "2010-09-27"

在这种情况下, strtotime预计日期为月/日/年格式。

如果您想要安全,Ymd通常是一种很好的格式。

值得指出的是, strtotime()确实接受像“今天”这样的单词作为有效输入,因此如果你想要的只是今天的日期,你就不需要在那里调用date()。 你可以使用strtotime('today');

来想一想,简单地调用time(); 会得到你当前的时间戳。

但要真正回答这个问题,你需要考虑dmYmdY是不明确的 - 如果月份的日期小于12日,就不可能分辨出这两种日期格式中的哪一种是有意的。 因此PHP只接受其中一个(我相信如果你有斜线,它使用m / d / Y,但对于点或破折号,它假定为dmY。

如果你在内部使用strtotime()转换日期格式等,几乎可以肯定有更好的方法。 但是如果你真的需要这样做,那么使用'Ym-d'格式,因为它更加普遍可靠。

另一方面,如果您接受来自用户的日期输入并假设strtotime()将处理抛出的任何内容,那么遗憾的是您错了; strtotime()有一些很大的限制,你已经找到了一个。 但还有其他一些。 如果您打算使用strtotime()来处理这类事情,那么您还需要进行额外的处理。 可能还有更好的选择,例如使用前端Javascript日期控件使您的用户更容易,而不必依赖strtotime()来计算他们的意思。

strtotime不会采用dmy格式。 好的方式是Ymd

strtotime不认为09.27.2010是有效日期......

你可以这样检查:

<?php
// will return false (as defined by the docs)
echo var_dump(strtotime("09.27.2010"));
?>

该函数期望给出一个包含美国英语日期格式的字符串,并尝试将该格式解析为Unix时间戳。 美国时间格式为:MM DD YYYY

在这里查看有关哪些格式有效的信息http://www.php.net/manual/en/datetime.formats.php 但是,对于2个日期之间的尊重,你的意思是什么? 你的意思是2个日期之间的Timespan?

echo (time() - strotime("- 2 days")) . " seconds difference";

那样的东西?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM