PHP strtotime() 函数接受某种格式?

发布于 2024-11-04 16:15:09 字数 423 浏览 1 评论 0原文

如果您可以为 PHP 中的 strtotime() 提供它可以理解并可以转换的日期格式,它会非常有效,但是例如您给它一个英国日期,它无法给出正确的 unix 时间戳。

是否有任何官方或非官方的 PHP 函数可以接受格式变量,该变量告诉函数以哪种格式传递日期和时间?

我最接近这样做的是 date_parse_from_format()mktime() 的混合

// Example usage of the function I'm after
//Like the date() function but in reverse
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s");

strtotime() in PHP works great if you can provide it with a date format it understands and can convert, but for example you give it a UK date it fails to give the correct unix timestamp.

Is there any PHP function, official or unofficial, that can accept a format variable that tells the function in which format the date and time is being passed?

The closest I have come to doing this is a mixture of date_parse_from_format() and mktime()

// Example usage of the function I'm after
//Like the date() function but in reverse
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s");

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

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

发布评论

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

评论(3

煞人兵器 2024-11-11 16:15:09

如果您有 PHP 5.3:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();

If you have PHP 5.3:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();
め七分饶幸 2024-11-11 16:15:09

我认为您正在寻找 strptime 。您可以使用它来解析日期,然后如果需要 UNIX 时间戳,请使用 mktime

function strotimeformat($date, $format) {
  $d = strptime($date, $format);
  return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
                $d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}

这适用于 PHP 5.1 及更高版本。

You are looking for strptime, I think. you can use it to parse the date and then use mktime if you need a UNIX timestamp.

function strotimeformat($date, $format) {
  $d = strptime($date, $format);
  return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
                $d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}

This will work with PHP 5.1 and onwards.

渡你暖光 2024-11-11 16:15:09

当使用 / 作为分隔符时,strtotime 假定它是美国日期/时间。要让它认为它是欧元日期/时间,请使用 -. 作为日期分隔符。您可以使用简单的 str_replace()/ 更改为 -.

strtotime assumes it's a US date/time when using / as the separator. To get it to think it's a Euro date/time, use - or . as the date separator. You can change the /s to -s or .s with a simple str_replace()

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