Mysql TIMESTAMP:如何在PHP中验证字符串

时间:2016-03-23 14:22:27

标签: php mysql timestamp

在数据库中,TIMESTAMP类型中有一列。从控制台用户可以使用以下格式之一输入日期:

TIMESTAMP(14)   YYYYMMDDHHMMSS
TIMESTAMP(12)   YYMMDDHHMMSS
TIMESTAMP(10)   YYMMDDHHMM
TIMESTAMP(8)    YYYYMMDD
TIMESTAMP(6)    YYMMDD
TIMESTAMP(4)    YYMM
TIMESTAMP(2)    YY

正如mysql文档所说:所有元素都可以通过任何标点符号分开。

有没有办法验证php代码中的字符串变量是否符合mysql TIMESTAMP格式?
例 迁移:

    $this->createTable('tweet',[
        'id' => Schema::TYPE_PK,
        'text' => Schema::TYPE_STRING.' NOT NULL',
        'date_written' => Schema::TYPE_TIMESTAMP.' NOT NULL',
        'date_imported' => Schema::TYPE_TIMESTAMP.' NOT NULL',
    ],"ENGINE=InnoDB DEFAULT CHARSET=utf8");

动作:

 public function actionIndex()
    {
        $stdin = fopen("php://stdin", "r");

        /**
         * @var TweetShow $tweetShow
         */
        $tweetShow = Yii::$app->get('tweetshow');

        $tweetShow->showStatisticInformMessage();

        $dateAndTime = fgets($stdin);
        try {
            strtotime($dateAndTime);
        } catch (\Exception $e) {
            echo "\033[01;31mНеверный формат даты!!!\n";
            die();
        }

从这里我想确定dateAndTime有mysql TIMESTAMP格式

    /**
     * @var TweetStatistic $tweetStatistic
     */
    $tweetStatistic = Yii::$app->get('tweetstatistic');

    $statistic = $tweetStatistic->getHashtagsStatisticByDate($dateAndTime);

    $tweetShow->statisticByHashtags($statistic, $dateAndTime);
}
sttotime坏解决方案。用户可以输入任何可以在unix时间内解析的字符串。

0 个答案:

没有答案