【问题标题】:PHP date function convert the given date incorrectlyPHP日期函数错误地转换给定日期
【发布时间】:2018-09-29 11:04:19
【问题描述】:

我正在从 csv 文件中读取当前年份的日期 并通过以下日期函数传递它。

date('d-m-Y', strtotime($value[5]))

转换后的日期有时会显示20072009。 以下是格式的示例

从文件(月日期年和时间)-> 转换后(d-m-y)

6/30/2018 10:10:11 PM -> 30-06-2018
6/30/2018 10:10:40 PM -> 30-06-2018
07-02-18 9:55 -> 18-02-2007
07-02-18 10:01 -> 18-02-2007

在执行中进一步领先

8/31/2018 6:34:19 PM -> 31-08-2018
8/31/2018 9:43:07 PM -> 31-08-2018
09-01-18 10:00 -> 18-01-2009
09-01-18 10:04 -> 18-01-2009 

【问题讨论】:

  • 查看源数据可能会有所帮助,尤其是在您的代码似乎失败的地方~很可能是数据混乱
  • 07-02-18 是什么意思 -> 2018 年第 7 个月第 2 天?还是 2018 年第 2 个月的第 7 个日期?
  • @RamRaider 3v4l.org/34OOY
  • 我应该分享文件吗?@RamRaider
  • tbh - 我没有看到From file( month date year and time) - 正如@AlivetoDie 指出的数据07-02-18 是模棱两可的。如果您控制写入csv的数据,那么我会从那里开始在尝试调用日期例程之前,确保它具有凝聚力并且所有格式都正确

标签: php string date datetime


【解决方案1】:

我不确定这里的核心问题。但是,快速解决方法是使用替换功能,因为它显然可以与正斜杠配合使用:

echo date('d-m-Y', strtotime(str_replace('-', '/', '07-02-18')));

结果:Here

【讨论】:

    【解决方案2】:

    您可以使用DateTime::createFromFormat()设置输入日期格式。

    $dateStr = "07-02-18";
    DateTime::createFromFormat('d-m-y', $dateStr)->format('d-m-Y');
    // return 02/07/2018
    
    DateTime::createFromFormat('y-m-d', $dateStr)->format('d-m-Y');
    // return 02/18/2007
    

    检查结果在demo

    【讨论】:

    • 我收到错误 ` 在布尔值上调用成员函数 format() `。我正在使用 codeigniter
    • @lohit 您需要根据输入字符串更改格式。
    • @Lohit 因为您的输入日期与方法格式不匹配。例如对于07-02-18 9:55,您应该使用createFromFormat('d-m-y h:m', ... 检查3v4l.org/MOVhI
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多