【问题标题】:Date to Unix Time: Why don't this work?日期到 Unix 时间:为什么这不起作用?
【发布时间】:2014-03-14 22:27:08
【问题描述】:

我正在使用 Yii Wheels 日期选择器来选择日期,我尝试通过 Yii ActiveRecord 将日期保存到数据库中,它运行良好。现在我想存储 Unix 时间戳而不是日期本身。我已经尝试了从 PHP Date 类到 strtotime 的所有建议,但没有成功。 Yii 的 CDateTimeParser::parse 也不起作用。插入的日期始终是 unix 纪元,所以我知道我的转换不起作用。我的日期格式为1972-03-02

我的想法已经用完了。

这是我的代码:

    protected function beforeSave() 
    {
        if(parent::beforeSave()) 
        {         
            //change date to Unix time stamp 
            $this->ccalstartdate = CDateTimeParser::parse($this->ccalstartdate, 'yyyy-MM-dd');
            $this->ccalenddate = CDateTimeParser::parse($this->ccalenddate, 'yyyy-MM-dd'); 
        }
        return parent::beforeSave();
    }

编辑 在调试器中运行后,我可以看到转换正确,但值未正确保存到数据库。所以还有别的原因。在调用 AR save 之前,属性都是正确的。所以我猜这个方法根本不是原因。

【问题讨论】:

  • 如果没有任何效果,您是否绝对确定格式正确,您使用的是-,而不是 HTML —?
  • 你在做parent::beforeSave() twise!也许是这样
  • @MarkBaker 抱歉回复晚了,我必须好好睡一觉。你能打破你在问题中的意思吗?我已经输入了我使用的格式,并且我使用的是 - 的破折号,而不是 html 等价物,如果这是您要我解释的内容。
  • @tinybyte 刚刚认出它现在让我纠正它并再次重新测试

标签: php mysql date yii unix-timestamp


【解决方案1】:

我打错了仗。上面的代码工作得很好。问题是我在我的视图小部件中使用zii.widgets.CDetailView 来检查值。小部件正在转换事物,并且在失败时(使用其内部格式)打印了错误的数字。我检查了数据库值,它们被正确存储为 unix 时间戳。 感谢所有试图提供帮助的人。下次一定要小心点!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2013-09-22
    • 2023-03-21
    相关资源
    最近更新 更多