【问题标题】:How can I parse a date from a text file?如何从文本文件中解析日期?
【发布时间】:2015-11-11 12:34:04
【问题描述】:

我正在从文本文件中解析日期。这是我的文本文件:

#Tue Jul 15 15:40:44 CEST 2015

这就是我的解析方式:

foreach ($linesArray AS $line) {
    if (strlen($line) && $line[0] == '#') {
       $date = strtotime(substr($line, 1));
       $strDate = date("y-m-d H:i:s", $date);
    }

但结果我得到了不同的日期:

echo $strDate;

15-07-21 14:40:44

【问题讨论】:

标签: php


【解决方案1】:

您需要始终(大多数情况下)指定解析日期的格式。基本上,您需要构建一个适用于您的日期格式的字符串。所有可能的格式参数字符串都可以在这里找到:http://php.net/manual/en/function.date.php

这应该适用于您的日期格式:

$date = "Tue Jul 15 15:40:44 CEST 2015";
$formatted = DateTime::createFromFormat('* M d H:i:s T Y',$date);
var_dump($formatted->format("Y-m-d H:i:s"));

【讨论】:

  • 您好,谢谢您,这适用于您的约会对象,但不适用于我的约会对象。当我让你的约会 var_dump($date) 我得到这个结果 string(29) "Tue Jul 15 15:40:44 CEST 2015",但我的约会看起来像这样:string(30) "Tue Jul 15 15:40:44 CEST 2015 " 为什么我的约会不起作用?
  • 所以是同一个日期,只是最后有一个空格?使用trim() 删除两边的空格。我不确定您的输入与我的输入有何不同,因为我刚刚从您的代码中复制了 $date
  • 谢谢,trim 工作了,但是你的代码的 var_dump 结果仍然是 string(19) "2015-07-21 15:40:44" 21从哪里来?
  • 我在一个空白页面上尝试了你的代码,结果是string(19) "2015-07-21 15:40:44"
  • 我已将格式固定为'* M d H:i:s T Y'。我们实际上不想解析日期名称,因为它搞砸了。现在应该可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2022-10-14
  • 2012-06-02
  • 2012-03-22
相关资源
最近更新 更多