php - 自定义报告Magento中与时区的区别

标签 php magento date datetime timezone

我正在 Magento 中创建自定义报告。我的服务器位于美国,我的商店位于巴西。事实证明,购买时间表保存在美国时间表中,即比巴西多 3 小时。这使得报告结果有所不同。

想象一下以下情况:客户在 30/06 晚上 10:00(巴西时间)进行了购买,在数据库中,此次购买发生在 01/07 凌晨 01:00。

如何选择订单创建时间(美国格林威治标准时间)并从巴西顺时针旋转?

今天,我正在使用它。

      $to="";
$from="";
$show_order_statuses = 0;
$orserstatus = "";

$result_order = 0;

if(!empty($_REQUEST['from']) && !empty($_REQUEST['to'])){

    $orders_row = array();
    date_default_timezone_set('America/Sao_Paulo'); //define o timezone como Sãp Paulo  
    $filter_type = $_REQUEST['filter_type'];
    $from = $_REQUEST['from'];
    $to = $_REQUEST['to'];      
    $from_date = date('Y-m-d' . ' 00:00:00', strtotime($from));
    $to_date = date('Y-m-d' . ' 23:59:59', strtotime($to));


    $filter_model  = ($filter_type == 'shipping_date')
        ? 'sales/order_shipment_collection'
        : 'sales/order_collection';

    if($_REQUEST['show_order_statuses']>0){
        $orserstatus = $_REQUEST['order_statuses'];
        $_orderCollections = Mage::getResourceModel($filter_model);
            $_orderCollections->addAttributeToSelect('*');
            $_orderCollections->addFieldToFilter('created_at', array('from'=>$from_date, 'to'=>$to_date));
            if($filter_type == 'order_date'){
                $_orderCollections->addFieldToFilter('status', $orserstatus);
            }                
            $_orderCollections->setOrder('created_at', 'desc');
            $_orderCollections->load();
    }else{
        $_orderCollections = Mage::getResourceModel($filter_model)
            ->addAttributeToSelect('*')
            ->addFieldToFilter('created_at', array('from'=>$from_date, 'to'=>$to_date))
            ->setOrder('created_at', 'desc')
            ->load();
    }

谁能帮忙,谢谢

最佳答案

您应该始终使用 Magento 的核心日期函数来考虑时区。

所以代替:

$from_date = date( 'Y-m-d' . ' 00:00:00', strtotime( $from ) );

使用:

$from_date = Mage::getModel( 'core/date' )->date( 'Y-m-d 00:00:00', strtotime( $from ) );

这将根据您在商店管理员配置中设置的时区为您提供日期。

关于php - 自定义报告Magento中与时区的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318212/

相关文章:

php - 关于带有 onchange 操作的下拉列表的快速 javascript 问题

magento - 在 Magento 中重新打开一个完整/关闭的订单?

security - Magento - 用户可以看到其他人的数据

php - 单击按钮禁用它并在日期更改按钮在 php 中重新激活后将当前日期时间存储在数据库中

javascript 有时是 CET 有时是 CEST

javascript - javascript获取今天、明天和昨天的日期

php - 如何使用 jquery imgAreaSelect 使用 php 裁剪图像?

php - 为什么我的 Ajax 功能不起作用?

php - mysql插入查询出错

javascript - 在 Magento 2 中编辑前端的最佳方法是什么?