সংক্ষিপ্ত উত্তর
$now = date_create()->format('Y-m-d H:i:s');
দীর্ঘ উত্তরের জন্য নীচে পড়ুন।
পিএইচপি-তে মাইএসকিউএল এখন () ফাংশনের নকল করুন
এখানে পিএইচপি-র উপায়গুলির একটি তালিকা রয়েছে যা মাইএসকিউএল অনুকরণ করে NOW()
ফাংশনটি ।
// relative date
$now = date_create('now')->format('Y-m-d H:i:s'); // works in php 5.2 and higher
$now = date_create()->format('Y-m-d H:i:s'); // also works in php 5.2
$now = new DateTime('now')->format('Y-m-d H:i:s'); // syntax error!!!
$now = (new DateTime('now'))->format('Y-m-d H:i:s'); // works in php 5.4 and higher
$now = date('Y-m-d H:i:s'); // Slightly higher performance, but less usable for date/time manipulations
// From Unix timestamp
// Using date_create() with a Unix timestamp will give you a FALSE,
// and if you try to invoke format() on a FALSE then you'll get a:
// Fatal error: Call to a member function format() on boolean
// So if you work with Unix timestamps then you could use: date_create_from_format().
$unixTimeStamp = 1420070400; // 01/01/2015 00:00:00
$y2015 = date_create_from_format('U', $unixTimeStamp, timezone_open('Europe/Amsterdam'))->format('Y-m-d H:i:s');
$y2015 = date('Y-m-d H:i:s', $unixTimeStamp);
আমি মনে করি date_create()->format('Y-m-d H:i:s')
এটিই সেরা উপায় কারণ এই পদ্ধতির সাহায্যে সময় / সময়-অঞ্চল ম্যানিপুলেশনগুলির চেয়ে সহজ পরিচালনা করতে দেওয়া হয় date('Y-m-d H:i:s')
এবং এটি পিএইচপি 5.2 এর পরে কাজ করে।
মাইএসকিউএল এখন () ফাংশন
মাইএসকিউএল ফাংশন NOW()
এই বিন্যাসে DATETIME মান দেয়: 'YYYY-MM-DD HH:MM:SS'
। এখানে দেখুন: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-function.html#function_ Now ।
একটি আকর্ষণীয় তথ্য হ'ল এই ক্যোয়ারীটি চালিয়ে ডেটটাইম ফর্ম্যাট পাওয়া সম্ভব: SHOW VARIABLES LIKE 'd%e_format'
ফলাফলটি এরকম কিছু হতে পারে:
Variable_name Value
date_format %Y-%m-%d
datetime_format %Y-%m-%d %H:%i:%s
এখানে ভেরিয়েবলগুলি কেবল পঠনযোগ্য ভেরিয়েবল। সুতরাং আপনি এটি পরিবর্তন করতে পারবেন না।
আমার ধারণা মাইএসকিউএল NOW()
ফাংশনটি datetime_format
ভেরিয়েবলের থেকে এটির ফর্ম্যাট হয়ে যায় ।
তারিখ_ক্রিয়েট () -> ফর্ম্যাট () পরিবর্তে তারিখ () সংক্ষিপ্তসারের সুবিধা
date_create('now')->format('Y-m-d H:i:s')
ওভারের অনুকূল তথ্যগুলি হ'ল date('Y-m-d H:i:s')
:
- সময় ম্যানিপুলেশনগুলি পরিচালনা করা সহজ
- সময় অঞ্চলগুলি পরিচালনা করা সহজ
- গলি
তারিখ_ক্রিয়েট () -> বিন্যাস () পরিবর্তে তারিখ () এর অসুবিধাগুলি
ফাংশনটির date()
তুলনায় কিছুটা ভাল পারফরম্যান্স রয়েছে date_create()->format()
। নীচে মানদণ্ড পরীক্ষা দেখুন।
$start = time();
for ($i = 0; $i <= 5000000; $i++) {
$a = date_create('now')->format('Y-m-d H:i:s');
}
$end = time();
$elapsedTimeA = $end - $start;
echo 'Case A, elapsed time in seconds: ' . $elapsedTimeA;
echo '<br>';
$start = time();
for ($i = 0; $i <= 5000000; $i++) {
$b = date('Y-m-d H:i:s');
}
$end = time();
$elapsedTimeB = $end - $start;
echo 'Case B, elapsed time in seconds: ' . $elapsedTimeB;
echo '<br>';
// OUTPUT
Case A, elapsed time in seconds: 31
Case B, elapsed time in seconds: 14
উপরের কেসটি দেখায় যে date()
এটি দ্রুত। তবে, আমরা যদি পরীক্ষার পরিস্থিতিটি কিছুটা পরিবর্তন করি তবে ফলাফল আলাদা হবে। নিচে দেখ:
$start = time();
$dt = date_create('now');
for ($i = 0; $i <= 5000000; $i++) {
$a = $dt->format('Y-m-d H:i:s');
}
$end = time();
$elapsedTimeA = $end - $start;
echo 'Case A, elapsed time in seconds: ' . $elapsedTimeA;
echo '<br>';
$start = time();
for ($i = 0; $i <= 5000000; $i++) {
$b = date('Y-m-d H:i:s');
}
$end = time();
$elapsedTimeB = $end - $start;
echo 'Case B, elapsed time in seconds: ' . $elapsedTimeB;
echo '<br>';
// OUTPUT
Case A, elapsed time in seconds: 14
Case B, elapsed time in seconds: 15
ডেটটাইম পদ্ধতিটি format()
এখানে তুলনায় দ্রুত date()
।
তারিখ_ক্রিয়েট () -> ফর্ম্যাট () পরিবর্তে তারিখ () এর সুবিধা
বিস্তারিত ব্যাখ্যার জন্য পড়ুন।
সময় ম্যানিপুলেশনগুলি পরিচালনা করা সহজ
date_create()
আপেক্ষিক তারিখ / সময় বিন্যাস গ্রহণ করে (যেমন now
, yesterday
বা +1 day
) এই লিঙ্কটি দেখুন , উদাহরণস্বরূপ:
$tomorrow = date_create('+1 day')->format('Y-m-d H:i:s');
date()
এটির মতো একটি আপেক্ষিক তারিখ / সময় বিন্যাস গ্রহণ করে:
$tomorrow = date('Y-m-d H:i:s', strtotime('+1 day'));
$tomorrow = date('Y-m-d H:i:s', (time() + 86400)); // 86400 seconds = 1 day
সময় অঞ্চলগুলি পরিচালনা করা সহজ
যখন সময় অঞ্চলগুলি বিবেচনা করে তখন ব্যবহারটি date_create()->format()
আরও অনেক বেশি অর্থবোধ করে date()
কারণ কারণ date()
ডিফল্ট সময় অঞ্চলটি যা নির্দেশে কনফিগার করা php.ini
থাকে তা ব্যবহার করে date.timezone
। লিঙ্ক: http://php.net/manual/en/datetime.configration.php#ini.date.timezone ।
রান-টাইমের সময় সময় অঞ্চল পরিবর্তন করা সম্ভব to উদাহরণ:
date_default_timezone_set('Asia/Tokyo');
।
এর খারাপ দিকটি এটি সমস্ত তারিখ / সময় ফাংশনগুলিকে প্রভাবিত করে। আপনি যদি date_create()->format()
সংমিশ্রণে ব্যবহার করছেন তবে এই সমস্যাটি বিদ্যমান নেই timezone_open()
।
পিএইচপি প্রধান সময় অঞ্চলগুলিকে সমর্থন করে। মজার বিষয় হ'ল এটি আর্কটিক বৃত্ত এবং অ্যান্টার্কটিকাকেও সমর্থন করে। আপনি কি কখনও শুনেছেন Longyearbyen
? যদি তা না হয় তবে চিন্তিত হবেন না, যতক্ষণ না আমি পিএইচপি অফিশিয়াল ডকুমেন্টেশন না পড়েছি ততক্ষণ আমিও করিনি।
$nowLongyearbyen = date_create('now', timezone_open('Arctic/Longyearbyen'))->format('Y-m-d H:i:s');
সমস্ত সমর্থিত সময় অঞ্চলগুলির একটি তালিকা দেখুন:
http://php.net/manual/en/timezones.php ।
গলি
ওওপি স্টেট-পূর্ণ বস্তু ব্যবহার করে। সুতরাং আমি এইভাবে চিন্তা করতে পছন্দ করি:
// Create a DateTime Object.
// Use the DateTime that applies for tomorrow.
// Give me the datetime in format 'Y-m-d H:i:s'
$tomorrow = date_create('+1 day')->format('Y-m-d H:i:s');
তারপরে এভাবে চিন্তা করা:
// Give me a date time string in format 'Y-m-d H:i:s',
// use strtotime() to calculate the Unix timestamp that applies for tomorrow.
$tomorrow = date('Y-m-d H:i:s', strtotime('+1 day'));
অতএব আমি বলব যে date_create()->format()
পদ্ধতিটি তখন আমার কাছে আরও পাঠযোগ্য date()
।
ডেট_ক্রিয়েট () ভিএস নতুন ডেটটাইম ()
date_create()
ওভারের অনুকূল তথ্যগুলি হ'ল new DateTime()
:
নামস্থান
আপনি যদি কোনও নেমস্পেসে কাজ করেন এবং নতুন কীওয়ার্ডের সাথে ডেটটাইম অবজেক্টটি শুরু করতে চান, তবে আপনাকে এটি এইভাবে করতে হবে:
namespace my_namespace;
// The backslash must be used if you are in a namespace.
// Forgetting about the backslash results in a fatal error.
$dt = new \DateTime();
এটিতে কোনও ভুল নেই, তবে উপরোক্ত দিকের ক্ষতিটি হ'ল লোকেরা ব্যাকস্ল্যাশ সম্পর্কে বিক্ষিপ্তভাবে ভুলে যায়। date_create()
কনস্ট্রাক্টর ফাংশনটি ব্যবহার করে আপনাকে নেমস্পেসগুলি নিয়ে চিন্তা করতে হবে না।
$dt = date_create(); // in or not in a namespace it works in both situations
তারিখ_ক্রিয়েট () -> ফর্ম্যাট () এর উদাহরণ
যদি আমার কোনও অ্যারে পূরণ করতে হয় তবে আমি আমার প্রকল্পগুলির জন্য এই পদ্ধতির ব্যবহার করি। এটার মত:
$array = array(
'name' => 'John',
'date_time' => date_create('now')->format('Y-m-d H:i:s'), // uses the default timezone
'date_time_japan' => date_create('now', timezone_open('Asia/Tokyo'))->format('Y-m-d H:i:s'),
);