【问题标题】:Convert unconventional string to mysql datetime?将非常规字符串转换为 mysql 日期时间?
【发布时间】:2012-09-19 18:01:56
【问题描述】:

我对 php 完全陌生,想知道如何转换这个字符串:

Tue Jan 17 09:17:15 CST 2012

转换成适合 MySQL 日期时间格式(24 小时)的格式

01-17-2009 09:17:15

我发现 MySQL 函数 FROM_UNIXTIME() 据说可以将 PHP 时间戳转换为 MySQL DateTime。我的问题是将原始字符串转换为正确的 PHP 时间戳格式。

【问题讨论】:

  • 你试过strtotime吗? php.net/manual/en/function.strtotime.php
  • strtotime() - 这也可能作为重复关闭,这是一个非常常见的问题。
  • @andrewsi 我看到了,但由于我有一个非常规格式(CST),不知道它是否可以工作。有办法解决吗?
  • @hacket - 我不知道。但值得一试。
  • 这是一个时区,而不是非常规格式。阅读文档中关于时区的 cmets。

标签: php mysql datetime


【解决方案1】:

快速尝试:

$dt = 'Tue Jan 17 09:17:15 CST 2012';
$ts = strtotime( $dt );

echo date('Y-m-d G:i:s', $ts);

输出:2012-01-17 16:17:15

时差来自时区。我的服务器在 UTC+1,CST 是 UTC-6

【讨论】:

  • 我不认为使用 strtotime 是最好的方法。我更喜欢日期时间
【解决方案2】:

你也可以使用mysql功能,不过我不确定时区。

select DATE_FORMAT(STR_TO_DATE('Tue Jan 17 09:17:15 CST 2012','%a %b %e %h:%i:%s CST %Y'),'%m-%d-%Y %h:%i:%s');

【讨论】:

    【解决方案3】:

    如果您的 php >= 5.3,您可以使用 \DateTime::createFromFormat。我更喜欢这种解决方案而不是 strtotime 解决方案,因为您使用意味着“日期”而不是整数的东西来操纵日期。

    $date = \DateTime::createFromFormat('D M d h:i:s T Y',$dt);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      相关资源
      最近更新 更多