আমি সন্দেহ করি যে সমস্যাটি কিছু ঘনক্ষেত্রের সাথে সম্পর্কিত strtotime()
।
strtotime()
যে কোনও স্ট্রিং সম্পর্কে প্রায়শই নিতে পারে এবং এটি ইউনিক্স টাইমস্ট্যাম্পে রূপান্তর করতে পারে। সমস্যাটি হ'ল যখন স্ট্রিংটিতে একটি সুস্পষ্ট টাইমজোন থাকে না, এটি সেট দ্বারা ব্যবহৃত সেটাকে ব্যবহার করবে date_default_timezone_get()
। এটি বর্তমান ব্যবহারকারীর কাছ থেকে সেট করা উচিত, যদিও (এটি অ্যাকাউন্ট প্রক্সি দ্বারা সেট করা হয়)। যাইহোক, আপনি যে স্ট্রিংটি বাইরে বের $node->field_date->value
করছেন তা ইউটিসিতে অন্তর্নিহিত। অন্য কথায়, আমি মনে করি যে স্ট্রিংটি বিশ্লেষণ করা strtotime()
হচ্ছে 'আমেরিকা / নিউ_ইয়র্ক' হিসাবে ব্যাখ্যা করা হচ্ছে, 'ইউটিসি' নয়।
সুসংবাদটি হ'ল আপনি নিজের পরিস্থিতিকে অনেক সহজ করতে পারেন। একটি তারিখের পরিসরের ক্ষেত্র আইটেমটি চারটি অংশ নিয়ে গঠিত
- 'মান' ইউটিসি-তে স্ট্রিং হিসাবে শুরু করার তারিখ
- 'start_date' হ'ল 'মান' উপস্থাপনকারী একটি DrupalDateTime অবজেক্ট
- ইউটিসির স্ট্রিং হিসাবে 'end_value' শেষ তারিখ
- 'end_date' হ'ল 'end_value' উপস্থাপনকারী একটি DrupalDateTime অবজেক্ট
একটি সরল তারিখের সময় ক্ষেত্রের জন্য তারা
- 'মান' ইউটিসিতে স্ট্রিং হিসাবে তারিখ
- 'তারিখ' হ'ল 'মান' উপস্থাপনকারী একটি ড্রুপালডেটটাইম অবজেক্ট
সুতরাং, আপনি DrupalDateTime()
সরাসরি অবজেক্টের সাথে কাজ করতে পারেন । এছাড়াও, সেই date.formatter
পরিষেবাটি ব্যবহারকারীর দ্বারা পৃষ্ঠাটি ডিফল্টরূপে দেখতে যথাযথ টাইমজোনটি টানতে হবে (ব্যবহারকারীর সক্রিয় ভাষা ব্যবহারের পাশাপাশি) language
আমি সন্দেহ করি এরকম কিছু কাজ করবে
$node = Node::load(2100);
$start_date = $node->field_date->start_date;
$formatted = \Drupal::service('date.formatter')->format(
$start_date->getTimestamp(), 'custom', 'Y-m-d H:i:s P'
);
দ্রষ্টব্য আমি সেখানে 'পি' ফর্ম্যাট স্থানধারক যুক্ত করেছি যাতে আপনি দেখতে পাচ্ছেন যে সিস্টেমটি কী টাইমজোন ব্যবহার করছে তা thinks
আপনার অ্যাডমিন / কনফিগারেশন / আঞ্চলিক / সেটিংসে যথাযথ টাইমজোন সেট আপ হয়েছে এবং আপনার ব্যবহারকারীর টাইমজোনটি আপনি প্রত্যাশা করছেন তা নিশ্চিত করুন। এছাড়াও নিশ্চিত করুন যে আপনার php.ini এ সঠিক টাইমজোন সেট আছে (এটি date.timezone
সেটিং); অদ্ভুত জিনিসগুলি ঘটে যখন এটি সেট না করা হয় (এবং আমার মাথার উপরের অংশটি থেকে, আমি স্মরণ করতে পারি না যে এটি ইনস্টলারের মধ্যে বা সেট না করা অবস্থায় স্থিতির প্রতিবেদনে কোনও সতর্কতা সৃষ্টি করে কিনা I আমি সমস্যাটি মনে করি, তবে তা পাইনি কিনা) সংঘটিত)।
date
ড্রুপালডেটটাইম অ্যাক্সেস করার বৈশিষ্ট্যটি সম্পর্কে আমি জানতাম না । কৌতূহলের বাইরে আপনি এটি কীভাবে আবিষ্কার করলেন? আমি বুঝতে পেরেছিলাম যে আমার ক্ষেত্রটি ধরণের ছিলDateTimeItem
তবে সেখানে এই শ্রেণীর জন্য একজনdate
(বাvalue
) জনসাধারণ আছে তা স্পষ্ট মনে হয় না ।