আমি থেকে একটি তারিখ রূপান্তর করার চেষ্টা করছি yyyy-mm-dd
করার dd-mm-yyyy
(কিন্তু SQL এর যে না); তবে আমি জানি না কীভাবে তারিখ ফাংশনটির জন্য একটি টাইমস্ট্যাম্প দরকার এবং আমি এই স্ট্রিং থেকে টাইমস্ট্যাম্প পেতে পারি না।
এটা কিভাবে সম্ভব?
আমি থেকে একটি তারিখ রূপান্তর করার চেষ্টা করছি yyyy-mm-dd
করার dd-mm-yyyy
(কিন্তু SQL এর যে না); তবে আমি জানি না কীভাবে তারিখ ফাংশনটির জন্য একটি টাইমস্ট্যাম্প দরকার এবং আমি এই স্ট্রিং থেকে টাইমস্ট্যাম্প পেতে পারি না।
এটা কিভাবে সম্ভব?
উত্তর:
ব্যবহার করুন strtotime()
এবং date()
:
$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));
( পিএইচপি সাইটে স্ট্রোটাইম এবং তারিখ ডকুমেন্টেশন দেখুন ))
মনে রাখবেন এটি মূল প্রশ্নের একটি দ্রুত সমাধান ছিল। আরও বিস্তৃত রূপান্তরগুলির জন্য, আপনাকে অবশ্যই DateTime
পার্স এবং ফর্ম্যাট করতে ক্লাসটি ব্যবহার করা উচিত :-)
আপনি যদি স্ট্রোটাইম রূপান্তর এড়াতে চান (উদাহরণস্বরূপ, স্ট্রোটোটাইম আপনার ইনপুটটিকে বিশ্লেষণ করতে সক্ষম হচ্ছে না) আপনি ব্যবহার করতে পারেন,
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
বা, সমতুল্য:
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
আপনি প্রথমে এটি the তারিখের স্ট্রিংটি ফর্ম্যাটটি দিচ্ছেন Then তারপরে আপনি এটি যে ফর্ম্যাটটি চান তা বলছেন $ নতুনডেটস্ট্রিং to
অথবা যদি উৎস-বিন্যাসে সর্বদা "Ymd" (YYYY-MM-DD) হয়, তাহলে শুধু ব্যবহার তারিখসময় :
<?php
$source = '2012-07-31';
$date = new DateTime($source);
echo $date->format('d.m.Y'); // 31.07.2012
echo $date->format('d-m-Y'); // 31-07-2012
?>
DateTime::createFromFormat()
- এটি এর চেয়ে সত্যই আরও কার্যকরstrtotime()
strtotime()
সত্য টাইপ ফর্ম্যাট (Ymd) কে অন্য ফর্ম্যাটে রূপান্তর করার জন্য ইউজফুল, তবে DateTime::createFromFormat()
সর্বজনীন। এটি STR_TO_DATE
মাইএসকিউএলের মতো
strtotime()
ব্যবহার করুন:
implode('-', array_reverse(explode('-', $date)));
ওভারহেডের তারিখ রূপান্তর ব্যতীত, আমি নিশ্চিত নই যে এটি অনেক বেশি পরিমাণে আসবে।
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
এই কোডটি প্রতিটি তারিখের ফর্ম্যাটের জন্য কাজ করে।
আপনার পুরানো তারিখের ফর্ম্যাটের কারণে আপনি প্রতিস্থাপনের ভেরিয়েবলগুলির ক্রম পরিবর্তন করতে পারেন $ 3- $ 1- $ 2।
$timestamp = strtotime(your date variable);
$new_date = date('d-m-Y', $timestamp);
আরও জন্য ডকুমেন্টেশনstrtotime
দেখুন ।
বা আরও ছোট:
$new_date = date('d-m-Y', strtotime(your date variable));
এছাড়াও আরেকটি অস্পষ্ট সম্ভাবনা:
$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
আমি এটি ব্যবহার করব কিনা জানি না তবে এখনও :)
দ্রষ্টব্য : যেহেতু এই পোস্টের উত্তরটি মাঝে মাঝে উত্সাহিত হয়, তাই আমি দয়া করে এখানে ফিরে এসেছি যাতে লোকেদের আর এটিকে উত্সাহিত না করতে বলে। আমার উত্তরটি প্রাচীন, প্রযুক্তিগতভাবে সঠিক নয় এবং এখানে বেশ কয়েকটি আরও ভাল পন্থা রয়েছে। আমি কেবল এটি এখানে historicalতিহাসিক উদ্দেশ্যে রাখছি।
যদিও ডকুমেন্টেশনটি স্ট্রোটাইম ফাংশনটি খারাপভাবে বর্ণনা করেছে, @ আরজমুনরো তার মন্তব্যে বিষয়টি সঠিকভাবে সম্বোধন করেছেন: এটি আইএসও ফর্ম্যাট ডেটে "ওয়াইওয়াইওয়াই-এমএম-ডিডি"।
এছাড়াও, যদিও আমার তারিখ_কভার্টার ফাংশনটি এখনও কার্যকর হতে পারে, আমি সতর্ক করতে চাই যে নীচে অনর্থক বক্তব্য থাকতে পারে, তাই দয়া করে এগুলি অবহেলা করবেন না।
সর্বাধিক ভোট দেওয়া উত্তরটি আসলে ভুল!
পিএইচপি স্ট্রোটোটাইম ম্যানুয়াল এখানে উল্লেখ করেছে যে "ফাংশনটি একটি ইংরাজী তারিখের ফর্ম্যাট যুক্ত একটি স্ট্রিং প্রদানের প্রত্যাশা করে"। এর প্রকৃত অর্থ যা হ'ল এটি আমেরিকান মার্কিন তারিখের ফর্ম্যাট যেমন "এমডিওয়াই" বা "এম / ডি / ওয়াই" প্রত্যাশা করে।
তার মানে হল যে "ওয়াইএমডি" হিসাবে প্রদত্ত একটি তারিখ দ্বারা ভুল ব্যাখ্যা দেওয়া যেতে পারে strtotime
। আপনার প্রত্যাশিত বিন্যাসে তারিখটি সরবরাহ করা উচিত।
আমি বেশ কয়েকটি ফরম্যাটে তারিখগুলি ফিরিয়ে দিতে একটি সামান্য ফাংশন লিখেছিলাম। ইচ্ছামত ব্যবহার করুন এবং সংশোধন করুন। যদি কেউ এটিকে ক্লাসে পরিণত করে, আমি ভাগ করে নিলে আমি আনন্দিত।
function Date_Converter($date, $locale = "br") {
# Exception
if (is_null($date))
$date = date("m/d/Y H:i:s");
# Let's go ahead and get a string date in case we've
# been given a Unix Time Stamp
if ($locale == "unix")
$date = date("m/d/Y H:i:s", $date);
# Separate Date from Time
$date = explode(" ", $date);
if ($locale == "br") {
# Separate d/m/Y from Date
$date[0] = explode("/", $date[0]);
# Rearrange Date into m/d/Y
$date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2];
}
# Return date in all formats
# US
$Return["datetime"]["us"] = implode(" ", $date);
$Return["date"]["us"] = $date[0];
# Universal
$Return["time"] = $date[1];
$Return["unix_datetime"] = strtotime($Return["datetime"]["us"]);
$Return["unix_date"] = strtotime($Return["date"]["us"]);
$Return["getdate"] = getdate($Return["unix_datetime"]);
# BR
$Return["datetime"]["br"] = date("d/m/Y H:i:s", $Return["unix_datetime"]);
$Return["date"]["br"] = date("d/m/Y", $Return["unix_date"]);
# Return
return $Return;
} # End Function
এটি বাস্তবায়নের দুটি উপায় রয়েছে:
1।
$date = strtotime(date);
$new_date = date('d-m-Y', $date);
2।
$cls_date = new DateTime($date);
echo $cls_date->format('d-m-Y');
আপনি strftime()
ফাংশন চেষ্টা করতে পারেন । সাধারণ উদাহরণ:strftime($time, '%d %m %Y');
যে কোনও বিন্যাস থেকে যে কোনও বিন্যাসে রূপান্তর করতে এই ফাংশনটি ব্যবহার করুন
function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
$date_aux = date_create_from_format($from_format, $date);
return date_format($date_aux,$to_format);
}
নীচে প্রদত্ত পিএইচপি কোডটি ব্যবহার করে আগামীকালের তারিখটি ব্যবহার করে mktime()
এর ফর্ম্যাটটি ডিডি / মিমি / ইয়াই ফর্ম্যাটে পরিবর্তন করুন এবং তারপরে এটি মুদ্রণ করুন echo
।
$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));
আপনি তারিখ () এবং স্ট্রোটোটাইম () ব্যবহার করে ফর্ম্যাটটি পরিবর্তন করতে পারেন।
$ তারিখ = '9/18/2019';
প্রতিধ্বনি তারিখ ('dm-y', স্ট্রোটোটাইম ($ তারিখ));
ফলাফল:
18-09-19
আমরা (dmy) পরিবর্তন করে ফর্ম্যাটটি পরিবর্তন করতে পারি।
এই নির্দিষ্ট রূপান্তরকরণের জন্য আমরা একটি ফর্ম্যাট স্ট্রিংও ব্যবহার করতে পারি।
$new = vsprintf('%3$s-%2$s-%1$s', explode('-', $old));
স্পষ্টতই এটি অন্য অনেক তারিখের ফর্ম্যাট রূপান্তরগুলির জন্য কাজ করবে না, তবে যেহেতু আমরা কেবলমাত্র এই ক্ষেত্রে সাবস্ট্রিংগুলি পুনর্বিন্যাস করছি, এটি এটি করার অন্য একটি সম্ভাব্য উপায়।
strtotime()
। :-)
সহজ উপায় strtotime()
এবং date()
:
$original_dateTime = "2019-05-11 17:02:07"; #This may be database datetime
$newDate = date("d-m-Y", strtotime($original_dateTime));
সময়ের সাথে সাথে
$newDate = date("d-m-Y h:i:s a", strtotime($original_dateTime));
ব্যবহার করুন date_create
এবংdate_format
এটা চেষ্টা কর.
function formatDate($input, $output){
$inputdate = date_create($input);
$output = date_format($inputdate, $output);
return $output;
}
function dateFormat($date) {
$m = preg_replace('/[^0-9]/', '', $date);
if (preg_match_all('/\d{2}+/', $m, $r)) {
$r = reset($r);
if ($r[2] <= 12 && $r[3] <= 31) return "$r[0]$r[1]-$r[2]-$r[3]";// Y-m-d
if ($r[0] <= 31 && $r[1] != 0 && $r[1] <= 12) return "$r[2]$r[3]-$r[1]-$r[0]";// d-m-Y
if ($r[0] <= 12 && $r[1] <= 31) return "$r[2]$r[3]-$r[0]-$r[1]";// m-d-Y
if ($r[2] <= 31 && $r[3] <= 12) return "$r[0]$r[1]-$r[3]-$r[2]";//Y-m-d
}
}
var_dump(dateFormat('31/01/2000')); // return 2000-01-31
var_dump(dateFormat('01-31-2000')); // return 2000-01-31
var_dump(dateFormat('2000-31-01')); // return 2000-01-31
var_dump(dateFormat('20003101')); // return 2000-01-31