作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须按日期过滤集合(发票)才能获取一个月的所有发票。
例如:一张发票的 create_at
日期(在数据库中)为:2014-04-30 22:27:30
如果我过滤集合:
$dateFrom = '2014-04-01 00:00:00';
$dateTo = '2014-04-30 23:59:59';
$invoiceCollection->addAttributeToFilter('created_at', array(
'from' => $dateFrom,
'to' => $dateTo,
));
包含此日期的发票将在集合中。
存在两种日期:
$invoice->getCreatedAt()
并且:
$invoice->getCreatedAtStoreDate()
在这种情况下:
$invoice->getCreatedAt() = 2014-04-30 22:27:30 (UTC/GMT time)
$invoice->getCreatedAtStoreDate() = 2014-05-01 00:27:40 (local timezone)
在“销售”->“发票”下,“我的”发票将在 5 月下收取。如果我使用
$invoiceCollection = Mage::getModel('sales/order_invoice')->getCollection();
发票日期为“四月”。
所以我必须按 CreatedAtStoreDate
过滤我的集合 - 但这不是数据库字段。
我的问题:
如何按 CreatedAtStoreDate
过滤订单或发票集合,以便日期为 2014-04-30 22:27:30
的发票或订单将被不在我的四月收藏中,而是在五月?
感谢您的帮助。
最佳答案
您可以使用一些 GET 参数来定义本地偏移量,然后将此偏移量添加到过滤器中的日期。它会是这样的(我没有测试):
/**
* GET param which allow to set offset between local and server timezone. Server timezone is GMT.
* Examples: add ?gmt=2 in URL for set local time to GMT+2, ?gmt=-5 for GMT-5, etc.
*/
$gmt_offset = (int)Mage::app()->getRequest()->getParam('gmt');
$dateFrom = '2014-04-01 00:00:00';
$dateTo = '2014-04-30 23:59:59';
if($gmt_offset > -13 && $gmt_offset < 15 && $gmt_offset != 0){
$locale = Mage::app()->getLocale()->getLocaleCode();
$date_from = new Zend_Date(strtotime($dateFrom), Zend_Date::TIMESTAMP, $locale);
$date_to = new Zend_Date(strtotime($dateTo), Zend_Date::TIMESTAMP, $locale);
if($gmt_offset > 0){
$date_from->add($gmt_offset, Zend_Date::HOUR);
$date_to->add($gmt_offset, Zend_Date::HOUR);
}else{
$date_from->sub($gmt_offset, Zend_Date::HOUR);
$date_to->sub($gmt_offset, Zend_Date::HOUR);
}
$dateFrom = $date_from->get('YYYY-MM-dd HH:mm:ss');
$dateTo = $date_to->get('YYYY-MM-dd HH:mm:ss');
}
$invoiceCollection->addAttributeToFilter('created_at', array(
'from' => $dateFrom,
'to' => $dateTo,
));
关于magento - 集合 : filter by created_at by local time zone?(或 CreatedAtStoreDate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489854/
我必须按日期过滤集合(发票)才能获取一个月的所有发票。 例如:一张发票的 create_at 日期(在数据库中)为:2014-04-30 22:27:30 如果我过滤集合: $dateFrom
我是一名优秀的程序员,十分优秀!