php strtotime 函数

发布于 2024-11-25 23:49:23 字数 383 浏览 2 评论 0原文

我使用 PHP 的 strtotime 函数将日期从一种格式转换为另一种格式 我有以下

$date = "12-22-2011";

 echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 1970-01-01
// But when i replace "-"  with "/" I get proper output
$date = "12/22/2011";

echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 2011-12-22 

为什么? 或者是否有任何其他函数可以接受任何内容并转换为正确的日期格式?

I using PHP's strtotime function for converting date from one format to another
i have the following

$date = "12-22-2011";

 echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 1970-01-01
// But when i replace "-"  with "/" I get proper output
$date = "12/22/2011";

echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 2011-12-22 

Why so ?
or is there any other function which accepts anything and convert to proper date format ?

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

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

发布评论

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

评论(2

Spring初心 2024-12-02 23:49:23

来自 strtotime 文档:

通过查看各个部分之间的分隔符可以消除 m/d/y 或 dmy 格式的日期歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是短划线 (-) 或点 (.),则采用欧洲 dmy 格式。

本质上,连字符日期被假定为 dmy,而不是 mdy。

对于自定义解析,请使用 DateTime::createFromFormat()

From the strtotime documentation:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.

Essentially, hyphenated dates are assumed to be d-m-y, and never m-d-y.

For customised parsing, use DateTime::createFromFormat().

守望孤独 2024-12-02 23:49:23

使用 dd-mm-yyyymm-dd-yyyy 等格式不太安全:strtotime() 无法确定哪个格式您使用过的其中之一(想想 06-11-2011,例如:是在 6 月,还是 11 月?)。

对于 strtotime(),您通常最好使用 yyyy-mm-dd 格式。

如果您想以特定的已知格式解析日期,您应该使用 < strong>DateTime::createFromFormat() - 请注意,它仅适用于 PHP >= 5.3。

Using a format such as dd-mm-yyyy or mm-dd-yyyy is not quite safe : strtotime() cannot know for sure which one of those you used (think about 06-11-2011, for example : is it in june, or in november ?).

With strtotime(), you are generally better off using yyyy-mm-dd format.

If you want to parse a date in a specific, known, format, you should use DateTime::createFromFormat() -- note it's only available for PHP >= 5.3.

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