DateTime数据类型,MySQL和Yii

时间:2015-02-27 12:31:36

标签: php mysql datetime yii

让我假装我在MySQL中有一个表格,其中包含DateTime类型的字段。我们称之为fa字段。

现在让我假装我在Yii 1(1.1.16)中有以下代码:

$model = MyTable->createNewModel(); // <-- pseudo code
$model->fa = new DateTime("now");
$model->save();

$model = MyTable->getByPk(1); // <-- pseudo code
$model->fa; // <-- question 1
$model->fa = $model->fa->modify("+1 month"); // <-- question 2
$model->save();

我有以下问题:

问题1:

变量$model->fa是什么类型(在注释中显示'问题1'的行)?它是一个字符串?它是PHP的DateTime类型吗?或者它是DateTime的某种Yii表示?

问题2:

如果上一个问题的答案是“PHP的DateTime类型”,那么带有“问题2”注释的行是完全有效的,并且应该没有任何问题。但是$model->fa的类型不是PHP的DateTime类型?我如何在$model->fa添加1个月?

另请注意,我知道我可以使用format进行攻击并制作一个丑陋的解决方案,其中涉及从我/我自己的日期/时间格式表示解析,但我想尽可能避免这种情况。

1 个答案:

答案 0 :(得分:0)

Q1:  是的,它必须是DateTime类型。

Q2:  您可以使用此函数将一个月添加到dateTime变量。

function addMonth($iDate,$num = 1)
{
    $date = $iDate->format('Y-n-j');
    list($y, $m, $d) = explode('-', $date);

    $m += $num;
    while ($m > 12)
    {
        $m -= 12;
        $y++;
    }

    $last_day = date('t', strtotime("$y-$m-1"));
    if ($d > $last_day)
    {
        $d = $last_day;
    }


    $fDate = new DateTime();
    return $fDate->setDate($y, $m, $d);
}