将unixtime转换为mysql datetime保留一秒的时间

时间:2019-03-14 01:57:43

标签: php datetime mariadb

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "EmailInputModel",
"type": "object",
"properties": {
    "email": {
        "type": "string",
        "patternProperties":{ 
    "^((\"[\\w-\\s]+\")|([\\w-]+(?:\\.[\\w-]+)*)|(\"[\\w-\\s]+\")([\\w-]+(?:\\.[\\w-]+)*))(@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$)|(@\\[?((25[0-5]\\.|2[0-4][0-9]\\.|1[0-9]{2}\\.|[0-9]{1,2}\\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\]?$)/i": {}
        }
    },
    "message": {
        "type": "string"
    },
    "sender": {
        "type": "string"
    }
},
"required": ["email", "message", "sender"]
}

说$ _SERVER [“ REQUEST_TIME_FLOAT”] = 157888888888888.98765

$id["REQUEST_TIME_FLOAT"]="'".date( 'Y-m-d H:i:s.', $_SERVER["REQUEST_TIME_FLOAT"]).substr((($_SERVER["REQUEST_TIME_FLOAT"]-floor($_SERVER["REQUEST_TIME_FLOAT"]))),2,20)."'";

即使您将 u 添加到格式中,它也会删除 date 命令,只是添加00000而不是实际的毫秒数。

我能找到的大多数功能都只是切断.98765而我不想要。

我整理了一个如上所示的技巧。是否有更好的方法和/或更有效的cpu方式来实现此目的。

1 个答案:

答案 0 :(得分:1)

尝试使用DateTime::createFromFormat("U.u", $_SERVER["REQUEST_TIME_FLOAT"] );

文档说date()会减少毫秒数,因为它期望使用整数,但是此函数不会。