- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 createFromFormat 的行为感到困惑。
private function _event_date($eventdate) {
$this->_logger->err($eventdate);
$dt = new DateTime();
$dt->createFromFormat(DATE_ISO8601, $eventdate);
$formatted = $dt->format("m/d/Y");
$this->_logger->err($formatted);
return $formatted;
}
我多次调用_event_date。我希望当我创建一个新的 DateTime 对象时,它将接受 $eventdate 并产生一个新的格式化日期。
奇怪的是(对我来说),我的输出看起来像这样:
2013-04-04 15:10:26 UTC error _event_date 2013-04-05T21:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-12T20:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-16T18:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-17T19:30:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-18T20:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
由于某种原因,DateTime 似乎保留了我原来的 $eventdate 值。
这是为什么呢?我是否误解了 createFromFormat 的工作原理?我是否遗漏了 PHP 对象模型的一些内容? PHP 在我的饮料里放了什么东西吗?
-------------- 回答 ----------------
下面 Marc B 的回答确实解决了这个问题:
// month/day/year
private function _event_date($eventdate) {
$this->_logger->err($eventdate);
$dt = DateTime::createFromFormat(DATE_ISO8601, $eventdate);
$formatted = $dt->format("m/d/Y");
$this->_logger->err($formatted);
return $formatted;
}
这会产生正确的结果:
2013-04-04 15:34:56 UTC error _event_date 2013-04-04T19:30:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/04/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-05T21:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/05/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-12T20:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/12/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-16T18:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/16/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-17T19:30:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/17/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-18T20:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/18/2013
最佳答案
createFromFormat是一个静态方法,尝试一下
$date = DateTime::createFromFormat(DATE_ISO8601, $eventdate);
相反。
它返回一个 DateTime 对象,您没有捕获该对象,所以是的,您“记住”了之前设置的日期,它恰好是“现在”,因为您没有将日期作为构造函数传递论证。
关于PHP DateTime createFromFormat不会自然消亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815300/
运行 PHP 5.3.28 我有一个特定的日期作为 strtotime 阻塞的字符串返回,所以我想尝试 DateTime::createFromFormat(),但是尽管尽了最大努力还是出现了错误。
我不知道为什么我会收到此错误或如何修复它。 Call to a member function format() on a non-object createFromFormat 代码: $date
::createFromFormat() 结果提前一个月: var_dump($_GET['archive']); var_dump(Carbon::createFromFormat('m/Y', $
我的日期格式如下:2014 年 5 月 21 日星期三。 为了将此日期保存在数据库中,我尝试将其转换为日期时间,如下所示: $f['date'] = $_POST['date']; $date = D
我的日期格式如下:2014 年 5 月 21 日星期三。 为了将此日期保存在数据库中,我尝试将其转换为日期时间,如下所示: $f['date'] = $_POST['date']; $date = D
我如何使用 DateTime::createFromFormat 来捕获这样的日期的开始时间和结束时间: Sunday, March 29, 201510:00 AM - 12:00 PM 我需要将其
我不知道如何获取此 PHP 代码来将我的时间格式化为 MySQL 时间格式。一直给我一个错误:“找不到两位数的秒”。 这是 PHP 代码: "; var_dump(DateTime::getLas
我有一个代表周数和年份的字符串,我想输出本周的星期日。 PHP 示例: $dateString = '502016'; $dateObject = DateTime::createFromFormat
今天,\DateTime::createFromFormat 函数的行为让我感到困惑。 在我的例子中,我有一个字符串,代表以下格式的日期 m/Y (05/2017)。当我想将字符串转换为 DateTi
您好,我似乎无法让日期时间方法按预期工作?我可能做错了什么? // Passes OK $dateTime = DateTime::createFromFormat('d/m/Y', '12/12/2
我必须在日期中转换 DayOfYear 值。 我在 2016 年的第 70 天尝试关注: php -r 'var_dump(DateTime::createFromFormat("z Y","69 2
我想将日期形式从 d/m/Y 转换为具有时区偏移量的 Y-m-d。我可以使用以下代码将 d/m/Y 转换为 Y-m-d: $date = DateTime::createFromFormat('d/m
function validateDate($date, $format = 'm-Y') { $d = DateTime::createFromFormat($format, $date);
我在 debian 8 上使用 php 5.6.17。设置 owncloud 后,我注意到, 由 owncloud(不是由 apache)自行编写的日志具有错误的时区。 我对此进行了一些调查,似乎该行
我有这个代码块,用于在使用 DateTime::createFromFormat() 提交到数据库插入之前验证格式正确的日期.我期望日期格式将“DD/MM/YYYY”转换为“YYYY-MM-DD”,否
我有一串日期: 25/08/2012 我在这里尝试将其转换为 DateTime 对象,以便将其保存到 MySQL 数据库中。我的后端架构有一个准备接收此数据的 DateOfPrint 日期 列。 这是
PHP - DateTime::createFromFormat — 返回根据指定格式格式化的新 DateTime 对象 这个有效: $var = DateTime::createFromFormat
这个问题在这里已经有了答案: PHP DateTime::createFromFormat behavoiur (2 个答案) 关闭去年。 从字符串进行的日期转换返回第二个月(二月)的错误值: $d
我正在尝试在 php 中转换日期格式。 以下代码会产生持久性错误 $myDate = "31/12/1980"; $myDateTime = DateTime::createFromFormat('d
我正在扩展 DateTime,添加一些有用的方法和常量。 当使用 new 创建一个新对象时,一切都很好,但是当使用静态方法 createFromFormat 时,它总是返回原始的 DateTime 对
我是一名优秀的程序员,十分优秀!