PHP strtotime() 不输出任何内容

发布于 2024-07-30 05:33:54 字数 372 浏览 3 评论 0原文

这是我的 PHP 代码:

echo '<br />1. '.$w_time_no;
echo '<br />2. '.strtotime($w_time_no);
echo '<br />3. '.date('G:i', strtotime($w_time_no));

这就是我得到的:

1. 0000-00-00 22:00:00
2.
3. 2:00

为什么 strtotime() 本身不输出任何内容? 是不是服务器设置有问题? 服务器:Apache/2.2.11 (Win32)、PHP 5.2.10、MySQL 客户端版本:5.0.51a。

Here is my PHP code:

echo '<br />1. '.$w_time_no;
echo '<br />2. '.strtotime($w_time_no);
echo '<br />3. '.date('G:i', strtotime($w_time_no));

That's what I get:

1. 0000-00-00 22:00:00
2.
3. 2:00

Why strtotime() outputs nothing by itself? Is there something wrong with server settings? Server: Apache/2.2.11 (Win32), PHP 5.2.10, MySQL client version: 5.0.51a.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

黯然 2024-08-06 05:33:54

您将 strtotime() 误认为 time()

strtotime 字面意思是字符串到时间,它需要一个字符串来转换......到时间。

成功时返回时间戳,否则返回FALSE。 在 PHP 5.1.0 之前,此函数将在失败时返回 -1

所以它无法验证该时间字符串。

You are mistaking strtotime() for time().

strtotime is literally string to time, it needs a string to convert..... to time.

Returns a timestamp on success, FALSE otherwise. Previous to PHP 5.1.0, this function would return -1 on failure.

So it is failing to validate that time string.

谈下烟灰 2024-08-06 05:33:54

0000-00-00 不是有效日期。

我假设 date() 给出输出,因为它将输入时间解释为 0 并补偿服务器的时区。 我敢打赌 date('Ymd H:i', strtotime(...)) 会给出 1970-01-01 2:00

0000-00-00 is not a valid date.

date() gives an output because it interprets the input time as 0 and compensates for the timezone of your server, I'd assume. I'd bet that date('Y-m-d H:i', strtotime(...)) would give 1970-01-01 2:00

開玄 2024-08-06 05:33:54

strtotime 不会“输出”任何内容,顺便说一句:如果出现错误,它会返回 false ; 请参阅手册

返回值

成功时返回时间戳,FALSE
否则。 在 PHP 5.1.0 之前,此
失败时函数将返回-1。

不输出任何内容的是 echofalse 被视为空字符串,不会输出任何内容。

strtotime 的文档还给出了日期的有效范围:

注意:时间戳的有效范围
通常是从 1901 年 12 月 13 日星期五开始
20:45:54 UTC 至 2038 年 1 月 19 日星期二
世界标准时间 03:14:07。 (这些是日期
对应于最小值和
32 位有符号的最大值
整数。)此外,并非所有
平台支持负时间戳,
因此您的日期范围可能是
限制不早于Unix
时代。 这意味着例如日期
1970 年 1 月 1 日之前不适用于
Windows、某些 Linux 发行版以及
一些其他操作系统。 PHP
不过 5.1.0 和更新版本克服了这个限制。

'0000-00-00' 超出此范围,因此不被视为有效日期; 因此返回值是false

作为旁注,要真正了解变量内部的内容,您可以使用 var_dump

作为 bnus,与 Xdebug 一起使用,它会给你一个格式良好的输出;-)

strtotime doesn't "output" anything, btw : it returns false in case of an error ; see the manual :

Return Values

Returns a timestamp on success, FALSE
otherwise. Previous to PHP 5.1.0, this
function would return -1 on failure.

What doesn't output anything is echo : false is considered as an empty string, and nothing get outputed.

strtotime's documentation also gives the valid range for dates :

Note: The valid range of a timestamp
is typically from Fri, 13 Dec 1901
20:45:54 UTC to Tue, 19 Jan 2038
03:14:07 UTC. (These are the dates
that correspond to the minimum and
maximum values for a 32-bit signed
integer.) Additionally, not all
platforms support negative timestamps,
therefore your date range may be
limited to no earlier than the Unix
epoch. This means that e.g. dates
prior to Jan 1, 1970 will not work on
Windows, some Linux distributions, and
a few other operating systems. PHP
5.1.0 and newer versions overcome this limitation though.

'0000-00-00' is outside of this range, so it's not considered a valid date ; hence the false return value.

As a sidenote, to really know what's inside a variable, you can use var_dump.

As a bnus, used with Xdebug, it'll get you a nice-formated output ;-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文