【问题标题】:Failed to parse time string with name of the day before the date使用日期前一天的名称解析时间字符串失败
【发布时间】:2017-04-06 08:57:20
【问题描述】:

我的数据库中有一个字段代表这一天。但是,如果我尝试将其解析为 DateTime,则会收到以下错误:

Failed to parse time string (tuesday, 18 april 2017) at position 0 (d): The timezone could not be found in the database

现在我通过以下方式进一步解析数据:剥离日(日数)和月(月数):

$stripDay = $createDate->format('d');
$stripMonth = $createDate->format('M');

但现在我得到了上述错误。我认为这与日期之前的日期有关(本例中为星期二)。是否需要先转换时间才能截断这一天?

编辑:我的字符串开头是:2017 年 4 月 18 日,星期二

我需要先将其转换为我认为的日期,然后才能对其进行更改,但我似乎无法转换它。因为如果我使用$createDate1 = new DateTime($date); 我会得到一个错误

【问题讨论】:

  • 2017 年 4 月 16 日是星期日而不是星期二 ????
  • 抱歉打错了。我发现了问题。这是因为原始字符串(2017 年 4 月 18 日,星期二)是荷兰语(dinsdag,2017 年 4 月 18 日)

标签: php html datetime


【解决方案1】:

你可以使用:

$stripDay = date('d',strtotime('tuesday, 18 april 2017'));
$stripMonth = date('m',strtotime('tuesday, 18 april 2017'));

我的测试:

echo $stripDay ;

它打印 18

【讨论】:

  • 不起作用,给我一个月和一天的回报。我也无法创建 DateTime,因为它给了我上述错误: $createDate = new DateTime($date);
  • 在这里打印你的日期
  • 以上数据让我再次回到 1。
  • 好的,我发现了问题!!因为我的字符串是荷兰语,所以当我将荷兰语日期插入日期字段时,它会返回 1。是否有一些命令可以将日期更改为英语,或将日期更改为荷兰语
  • 不过这是另一个问题,我将您的答案标记为正确,我将寻找荷兰语日期语言转换的解决方案
【解决方案2】:

您可以使用 date php.net/manual/en/function.date.php 来很好地获取字符串的格式:

$date = '2017-01-01 11:11:11';

$day    = date('d', strtotime($date));
$month  = date('m', strtotime($date));
$year   = date('Y', strtotime($date));
$hour   = date('H', strtotime($date));
$minute = date('i', strtotime($date));
$second = date('s', strtotime($date));

【讨论】:

  • 不工作,给我一个月和一天的回报
  • @HuubS 请在此处打印您的 $date
  • 见我上面的编辑。我的 $date 是 2017 年 4 月 18 日,星期二
猜你喜欢
  • 1970-01-01
  • 2014-02-11
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
相关资源
最近更新 更多