检查值是否为datetime

Mar*_*rco 2 php datetime

我们正在设计一种新的传感器,可以将一些数据发送到Web应用程序.我们使用类似的传感器,但它们使用数据通道将发送到应用程序的值划分为不同的数据类型.

但是,这个新传感器将以毫秒为单位发送数据或32位时间.它不发送标识符位以查看该值是数据还是时间戳.

因为数据和时间戳都是整数值,我如何检查它是哪一个?

时间戳将是

YYYY/MM/DD HH:MI:SS:vv

我已经找到了preg_match,就像这样:

if (preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/', $value))
Run Code Online (Sandbox Code Playgroud)

但我如何包括毫秒?或者有一种比简单的更好的方法吗?

更新

我希望应用程序收到的日期将在int16中.因此,计算收到的值并处理值9和10(如日期时间)可能更容易.

Jaz*_*azZ 5

您可以使用PHP DateTime对象中createFromFormat()方法.

您将创建一个检查方法错误的函数:

function is_valid_date($date, $format = 'Y/m/d H:i:s.u')
{
    $d = DateTime::createFromFormat($format, $date);
    $errors = DateTime::getLastErrors();         

    return (
        $errors['warning_count'] == 0 && 
        $errors['error_count'] == 0 &&
        $d !== false
    );
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

编辑:

u在默认格式上添加(微秒).