【问题标题】:How can I convert 20:13-02-05T13:45:17-0500 to a MySQL datetime? [duplicate]如何将 20:13-02-05T13:45:17-0500 转换为 MySQL 日期时间? [复制]
【发布时间】:2013-02-06 12:28:43
【问题描述】:

在 PHP 中,如何将格式为 20:13-02-05T13:45:17-0500 的日期/时间字符串转换为有效的 MySQL 日期时间以便我可以存储它?

到目前为止我已经尝试过

$date_id = date('Y-m-d H:i:s', strtotime($date_id));

【问题讨论】:

  • 通过编写一些代码 ;) 到目前为止你尝试了什么?
  • 我尝试了几件事,但无法成功。
  • 这个日期是从哪里来的? 20:13 在我看来并不标准。
  • 来自 JSON API 的@Salman。我认为它的格式可以与 javascript 一起使用。
  • 日期似乎没有遵循任何标准。您仍然可以通过使用str_replace 删除第一个: 来使其与strtotime 一起工作。但请仔细检查 API 供应商,看看他们的 API 是否损坏。

标签: php mysql datetime


【解决方案1】:

我认为这应该可行:

$date_to_store = '20:13-02-05T13:45:17-0500';
$date_for_mysql = date( 'Y-m-d H:i:s' , strtotime( $date_to_store ) );

然后在您的查询中,只需插入 $date_for_mysql:

mysql_query("INSERT INTO `table` (`timestamp`) VALUES ('" . $date_for_mysql . "')");

当然你应该使用准备好的语句,但这只是为了说明日期转换。

【讨论】:

  • 我得到无效的日期,例如 1970-01-01 00:00:00
【解决方案2】:
// convert non-standard year format 20:13 to 2013
$date = preg_replace ('/^(\d{2}):(\d{2})/', '$1$2', $date_id);

$timestamp = strtotime ($date);
echo date ('Y-m-d H:i:s', $timestamp);

【讨论】:

  • 谢谢!我很感激!
  • 那你能点个赞吗?
【解决方案3】:
explode(your_time);

这应该让你得到时间块,然后使用日期和 mktime。

date(Your_preferred_format, mktime(chunks_as_per_mktime));

【讨论】:

  • 我不明白这是怎么回事。
  • 什么是 chunks_as_per_mktime ?
  • 我认为mysql datetime 应该有一种特定的格式,而不是首选格式。
  • 当然有,例如,如果您的 mysql 日期时间格式是 2013-05-25 10:15:59,mktime 将采用您给它的值并以这种格式返回您的日期/时间,见 php.net/mktime
  • 它不起作用。提供无效的日期/时间,例如 1970-01-01 00:00:00 与 @Cyber​​Brian 的解决方案相同
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2014-06-10
  • 2011-06-29
  • 2012-03-04
  • 2018-01-07
  • 2023-03-30
  • 2011-11-11
相关资源
最近更新 更多