You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求Carbon::parse()支持字符串格式时间戳输入

解决Carbon::parse()无法解析字符串时间戳的通用方案

你遇到的问题很典型——Carbon::parse()确实没法直接处理纯数字字符串形式的时间戳,原因是底层的PHP DateTime会把这类字符串尝试解析为日期格式(比如把1589283012拆成年份1589、月份28,这显然不符合规则),所以才会抛出解析错误。

这里给你一个简洁且通用的解决方案,既能处理各种常规日期时间字符串,也能直接接收数字/字符串格式的时间戳:

// 一行代码搞定通用解析
$carbonDate = is_numeric($input) ? Carbon::createFromTimestamp((int)$input) : Carbon::parse($input);

细节说明:

  • is_numeric($input)会同时识别数字类型的时间戳,以及字符串形式的纯数字时间戳(比如"1589283012")
  • 用(int)转换是为了确保即使输入是带小数的时间戳字符串(比如"1589283012.456"),也能被正确转为秒级时间戳;如果需要保留毫秒精度,可以改成(float)并使用Carbon::createFromTimestampMs()(针对毫秒时间戳)
  • 对于常规的日期字符串(比如"2020-05-12 14:30:12"、"last Friday"等),依然会通过Carbon::parse()正常解析

如果需要频繁使用这个逻辑,也可以封装成一个简单的辅助函数:

function parseUniversalDate($input) {
    return is_numeric($input) 
        ? Carbon::createFromTimestamp((int)$input) 
        : Carbon::parse($input);
}

这样不管传入的是日期字符串、数字时间戳还是字符串时间戳,都能得到正确的Carbon实例。

内容的提问来源于stack exchange,提问作者Karol Sobański

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:37:56