【问题标题】:UTC datetime conversionUTC 日期时间转换
【发布时间】:2011-07-11 04:17:59
【问题描述】:

我从我的设备收到的值是:090211 = ddmmyy 和 062123 = hhmmss(UTC)。

但我发现时间总是比我需要的时间晚 8 小时。因为马来西亚的时间是+8:00。首先我想添加 8 小时,最后我想将这种日期格式存储到我的 MySQL 数据库中为“2011-02-09 06:21:23”。我将如何转换这些值?

【问题讨论】:

  • 你能展示一些你现在正在使用的代码吗?

标签: php mysql datetime timezone phpmyadmin


【解决方案1】:

要在 PHP 中转换为日期时间,您需要 function DateTime::createFromFormat(); 此函数将返回 DateTime。 使用此函数,您还可以将timezone 作为参数传递。

例子:

$date = DateTime::createFromFormat( 'dmy Gms', '090211 062123', new DateTimeZone("Europe/Amsterdam") );

您可以创建以下输出:

echo $date->format('Y-m-d H:i:s');

或 MySQL 的 UNIX 时间戳:

echo $date->format('U');

希望这会有所帮助!

【讨论】:

  • 尊敬的先生,实际上我并不真正理解代码。哈哈。为什么它是 'dmy Gms', '090211 062123' 而不是 'ddmmyy' ?除了 Gms 代表什么?谢谢
  • 这是我的编码:echo("
    "); $date = DateTime::createFromFormat('dmy Gms', '090211 062123', new DateTimeZone("Asia/Kuala_Lumpur") ); echo $date->format('Y-m-d H:i:s');我得到 2012-09-09 06:00:23 ?为什么会变成2012?谢谢指导我
  • 它不同于普通的 PHP date() 格式。请使用此格式link
  • 试试:DateTime::createFromFormat( 'dmy Gis', '090211 062123' );,我的错!
  • 尊敬的先生,它现在正在工作,我得到了结果 2011-02-09 06:21:23。如果我希望结果添加 +8 小时,那么我会给我 2011-02-09 14:21:23 的结果吗?谢谢
【解决方案2】:

PHP 有 localtimegettimeofday 两个函数,你是不是偶然使用了错误的函数(或误解了它的结果)?

【讨论】:

  • 其实我正在使用这个代码 'code' $the_date = strtotime("2010-01-19 12:01:20"); echo(date_default_timezone_get() . "
    "); echo(date("Y-d-mTG:i:sz",$the_date) . "
    "); echo(date_default_timezone_set("Asia/Kuala_Lumpur") . "
    "); echo(date("Y-d-mTG:i:sz", $the_date) . "
    ");我得到的结果是 UTC 2010-19-01UTC12:01:2018 1 2010-19-01MYT20:01:2018 实际上这个结果是错误的,应该是 2010-19-01MYT20:01:20,你知道 wat发生了??
  • 小心strtotime(),你没有明确定义字符串的格式。所以解析器可能会误用月/日表示法。
猜你喜欢
  • 2019-11-26
  • 2013-08-18
  • 2014-01-05
  • 1970-01-01
  • 2021-12-31
  • 2012-10-07
  • 1970-01-01
  • 2014-05-06
  • 2016-07-29
相关资源
最近更新 更多