সংক্ষিপ্ত উত্তর
$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'),
);