ম্যাজেন্টো 2 বর্তমান স্টোর তারিখের সময় পান


25

ম্যাজেন্টো 1.x এ আপনি স্টোরের তারিখের সময় পেতে পারেন

Mage::getModel('core/date')->gmtDate();

ম্যাজেন্টো ২.x এর সমতুল্য কি হবে?

উত্তর:


42

আপনার ক্লাস কনস্ট্রাক্টর ইনজেক্ট করতে হবে \Magento\Framework\Stdlib\DateTime\DateTimeএবং এটি ব্যবহার করতে হবে।
এটার মতো কিছু:

protected $date;
public function __construct(
    ....
    \Magento\Framework\Stdlib\DateTime\DateTime $date,
    ....
) {
    ....
    $this->date = $date;
    ....
}

তারপরে, আপনি আপনার শ্রেণিতে এটি ব্যবহার করতে পারেন:

$date = $this->date->gmtDate();

1
এটি
GMT

আমি এটি চেষ্টা করেছি তবে এটি সর্বদা 5 ঘন্টা সময় সময় দেয় আপনি আমাকে সহায়তা করতে পারেন
নবীনবাস

কীভাবে একমাত্র সময় পাবেন?
সঞ্জয় গোহিল

2
@SanjayGohil। gmtDateউপরের পদ্ধতিটি 2 টি alচ্ছিক পরামিতি গ্রহণ করে। প্রথমটি $formatযা ডিফল্ট হয় Y-m-d H:i:s। আপনি যে প্যারামিটারটি চান তা gmtDate('H:i:s')বা অন্য কোনও সময়ের ফর্ম্যাট দিয়ে কেবল পদ্ধতিটি কল করতে পারেন ।
Marius

এই পদ্ধতিতে কীভাবে তারিখের মধ্যে / থেকে মাস যোগ / বিয়োগ করবেন?
আজওয়াদ সৈয়দ

18

Magento2 এ ইউটিসি তারিখ পেতে আপনার ব্যবহার করা উচিত\Magento\Framework\Stdlib\DateTime\DateTime::gmtDate();

আপনার নির্মাণের মাধ্যমে এই শ্রেণীর উপর নির্ভরতা ইনজেকশন করা উচিত এবং তারপরে এই ফাংশনটি ব্যবহার করুন। আরও তারিখ / সময় সম্পর্কিত পদ্ধতির জন্য এই শ্রেণিটি দেখুন।

আপনার কোডের নমুনায় আপনি ইউটিসি তারিখ পুনরুদ্ধার করছেন, সঞ্চয় করার তারিখ নয়। বর্তমান স্টোরের সময় অঞ্চল অনুযায়ী তারিখ ফর্ম্যাট করতে , ব্যবহার করুন Magento\Framework\Stdlib\DateTime\TimezoneInterface::formatDate();(আবার, নির্মাণের উপর নির্ভরতা ইনজেকশন দিয়ে)


বর্তমান স্টোর টাইমজোনগুলির জন্য এই ফাংশনটি আমাকে কেবল সময় দেয় না তবে আমি কীভাবে সময় পাব?
এনডি 17

একবার দেখুন\Magento\Framework\Stdlib\DateTime\DateTime::gmtTimestamp()
অ্যালেক্স পালিয়ারুশ

12

আপনি উদাহরণস্বরূপ আপনার ক্লাস কনস্ট্রাক্টারে ইনজেকশন দিয়ে বর্তমান স্টোর তারিখের সময়টি সহজেই পেতে \Magento\Framework\Stdlib\DateTime\TimezoneInterfaceপারেন এবং ডেটঅবজেক্ট পেতে সেইটিকে ব্যবহার করতে পারেন।

উদাহরণ স্বরূপ:

protected $timezone;
public function __construct(
    ....
    \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
    ....
) {
    ....
    $this->timezone = $timezone;
    ....
}

এবং তারপরে আপনি এটি অনুসরণ হিসাবে ব্যবহার করতে পারেন:

$date = $this->timezone->formatDate();

বিভিন্ন ফর্ম্যাট সম্পর্কে আরও তথ্যের জন্য আপনি এই নিবন্ধটি একবার দেখে নিতে পারেন https://codeblog.experius.nl/magento-2-get-c موجودہ- store- date- time/


1
আমি যদি টাইমজোন পেতে চাই তবে ??
বিকাশকারী ওয়েবাইল

এই কোডটি ব্যবহার করে কেউ টাইমজোন পেতে পারেন $ এটি-> স্টোর ম্যানেজার-> গেটস্টোর () -> গেটকনফিগ ('জেনারেল / লোকেল / টাইমজোন')। এবং এর জন্য নির্ভরতা শ্রেণি হবে \ ম্যাজেন্টো \ স্টোর \ মডেল \ স্টোর ম্যানেজারআইন্টারফেস $ স্টোর ম্যানেজার,
রাজীব সিং

3

"কন্ট্রোলার_অ্যাকশন_প্রেডিস্পাচ" ইভেন্টের সাথে আমরা পর্যবেক্ষক ব্যবহার করে স্টোর টাইমজোন সেট করতে পারি

মাইমডল / ইত্যাদি / ফ্রন্টএন্ড / ইভেন্ট.এক্সএমএল ফোল্ডারে ইভেন্ট.এক্সএমএল তৈরি করুন

<?xml version="1.0" encoding="UTF-8"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="controller_action_predispatch">
        <observer name="mymodule_timezone_set" instance="MyNamespace\Mymodule\Observer\SetStoreTimezoneObserver" />
    </event> </config>

পর্যবেক্ষক ফোল্ডারে সেটস্টোরটাইমজোনঅবার্সার.পিপি ফাইল তৈরি করুন

<?php
namespace MyNamespace\Mymodule\Observer;

use Magento\Framework\Event\ObserverInterface;

class SetStoreTimezoneObserver implements ObserverInterface
{

    protected $_storeTime;
    protected $_storeManager;

    public function __construct(
        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
        \Magento\Store\Model\StoreManagerInterface $storeManager
    )
    {
        $this->_storeTime = $timezone;
        $this->_storeManager = $storeManager;
        $this->setStoreTimezone();
    }

    /**
     * Retrieve store model instance
     *
     * @return \Magento\Store\Model\Store
     */
    public function getStore()
    {
        return $this->_storeManager->getStore();
    }

    /*
     * Set Store Timezone
     */
    public function setStoreTimezone()
    {
        date_default_timezone_set(
            $this->_storeTime->getConfigTimezone('store', $this->getStore())
        );
    }

    /**
     * Predispath admin action controller
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $this->setStoreTimezone();
    }
}

এখন "ইউটিসি" তারিখ পাওয়ার পরিবর্তে, আমরা সাধারণ তারিখ ("ওয়াইএমডি এইচ: আই: এস") ফাংশনটি ব্যবহার করে বর্তমান স্টোর তারিখ পাই।


2

ম্যাজেন্টো ২.x এর বিভিন্ন শ্রেণীর জন্য প্রসঙ্গ বিষয়বস্তু রয়েছে, আপনি যদি ব্লকের প্রসঙ্গে থাকেন তবে প্রসঙ্গ বিষয়বস্তু আপনাকে স্থানীয়ভাবে তারিখের অবজেক্টটি নীচের হিসাবে দিতে পারে:

/**
 * Locale Date/Timezone
 * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
 */
protected $_timezone;

/**
 * @param \Magento\Catalog\Block\Product\Context $context
 * @param array $data
 */
public function __construct(
    \Magento\Catalog\Block\Product\Context $context,
    array $data = []
) {
    $this->_timezone = $context->getLocaleDate();
    parent::__construct(
        $context,
        $data
    );
}

তারপরে আপনি এটি নীচের মতো ব্যবহার করতে পারেন:

$todayDate = $this->_timezone->date()->format('Y-m-d H:i:s');

Di: কম্পাইল কমান্ড কার্যকর করার সময় এটি ত্রুটিগুলি এড়াতে পারে।


2

নির্দিষ্ট স্টোরের বর্তমান তারিখের সময় পেতে (স্টোর ম্যানেজারের বর্তমান স্টোর ব্যতীত):

থেকে রেফারেন্স \Magento\Framework\Stdlib\DateTime\Timezone::convertConfigTimeToUtc()

/** @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone */
/** @var \Magento\Framework\Stdlib\DateTime\Timezone $timezone */

$timezone = $this->timezone->getConfigTimezone(\Magento\Store\Model\ScopeInterface::SCOPE_STORES, $storeId);
$currentDate = new \DateTime('now', new \DateTimeZone($timezone));
var_dump($currentDate->format('Y-m-d H:i:s'));

\Magento\Framework\Stdlib\DateTime আপনাকে ইউটিসি তারিখের সময়, জিএমটি তারিখের সময় বা বর্তমান স্টোরের তারিখের সময় পাবেন।

ম্যাজেন্টো 2 টি ইউটিসি সেট করে app/bootstrap:

date_default_timezone_set('UTC');

\DateTimeএই পিএইচপি টাইমজোন সেটিংটি ডিফল্টরূপে ব্যবহার করে। ম্যাজেন্টো 2 অভ্যন্তরীণ ইউটিসি ব্যবহার করবে এবং এটি ইউটিসি-তে মাইএসকিউএল-তেও সঞ্চয় করে। লিনাক্স সার্ভার এবং মাইএসকিউএল সার্ভারগুলি সাধারণত ইউটিসি টাইমজোনতে সেট করা থাকে। কোনও সার্ভারে টাইমজোন সেটিংসের শৃঙ্খলা এই বিষয়টির আওতায় নেই।

ম্যাজেন্টো 2 \Magento\Framework\Locale\Resolverবর্তমান স্টোর টাইমজোন (উদাঃ Europe/Bruxelles) পেতে লোকেলের রেজোলভার ব্যবহার করে বর্তমান স্টোরের টাইমজোনটিতে সামনের তারিখে প্রদর্শিত হবে ।


0

আমার ক্ষেত্রে, আমি যদি এটি আমার নিয়ামকটিতে ব্যবহার করি তবে এটি কার্যকর হয় না। পরিবর্তে আমি ডিফল্ট লোকেলের তারিখ পাই।

তবে আমি যদি এটি আমার ব্লকে ব্যবহার করি তবে এটি কাজ করে।

\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone
$todayDate = $this->_timezone->date()->format('Y-m-d H:i:s');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.