让我假装我在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
进行攻击并制作一个丑陋的解决方案,其中涉及从我/我自己的日期/时间格式表示解析,但我想尽可能避免这种情况。
答案 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);
}