如何从日期中识别unix时间戳?

时间:2017-12-07 13:23:00

标签: php regex timestamp

我是如何创建一个简单的IF-statement来对31-10-2017中的12-01-20161511431687进行排序的?{/ p>

我正在从设定日期转换为使用unix时间戳,并需要一个解决方案来解决什么是什么。我想以人类可读的格式显示日期(天/月/年)。

所以我有一个$data在循环中。它从平面文件中提取日期。旧的东西刚刚将日期保存为日期。例如31-10-2017(完全相同)。

现在我使用unix时间戳。例如1511431687

我看到人们使用了一个简单的IF语句,但我不能使用它,因为它们都是10个单位长。否则本来会运作良好。

$data = // either a timestamp, or a date in this format: 31-10-2017

if (strlen($data) === 10) // it's a timestamp   
$data =  date("d-m-Y H:i:s", $data);

2 个答案:

答案 0 :(得分:3)

也许天真,但解决方案可能是检查$ data是否有数值。

if (is_numeric($data)) { // it's a timestamp   
    $data =  date("d-m-Y H:i:s", (int) $data);
}

答案 1 :(得分:0)

您有几种选择:

根据您期望的格式数量,我会按照这个逻辑顺序尝试:

  • 如果ctype_digit,请检查值是否在预期范围内
    • 如果超出预期范围,请尝试除以1000(时间戳以毫秒为单位)
  • 否则,尝试以您期望的任何格式匹配正则表达式
    • checkdate确认值是合理的
  • 最终将DateTime对象转换为标准化内部表示