मैं डेटाबेस से लाए गए दिनांक स्वरूप को बदलना चाहता हूं। अब मुझे 2016-10-01 मिला। {{$user->from_date}}
मैं लार्वा 5.3 में प्रारूप 'डमी' को बदलना चाहता हूं
{{ $user->from_date->format('d/m/Y')}}
मैं डेटाबेस से लाए गए दिनांक स्वरूप को बदलना चाहता हूं। अब मुझे 2016-10-01 मिला। {{$user->from_date}}
मैं लार्वा 5.3 में प्रारूप 'डमी' को बदलना चाहता हूं
{{ $user->from_date->format('d/m/Y')}}
जवाबों:
इसे इस्तेमाल करे:
date('d-m-Y', strtotime($user->from_date));
यह दिनांक को d-m-Y
आपके द्वारा दिए गए या जो भी प्रारूप में रूपांतरित करेगा ।
नोट: यह समाधान एक सामान्य समाधान है जो php और इसके किसी भी ढांचे के लिए काम करता है। एक लारावेल विशिष्ट विधि के लिए, हमेलराज द्वारा प्रदान किए गए समाधान का प्रयास करें ।
लारवेल में कार्बन का उपयोग अच्छा है
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
null
?
parse(null)
यह वर्तमान तिथि समय के रूप में परिवर्तित हो जाएगा
अपने मॉडल सेट में:
protected $dates = ['name_field'];
आपके विचार में:
{{ $user->from_date->format('d/m/Y') }}
काम करता है
Call to a member function format() on null
आप देख सकते हैं Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
आपको सरणी में अपने User
मॉडल कॉलम from_date
में सेट करने की $dates
आवश्यकता है और फिर आप प्रारूप को बदल सकते हैं$dateFormat
एक अन्य विकल्प भी इस विधि को अपने User
मॉडल में रखा गया है:
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
और फिर अगर आप चलाते {{ $user->from_date }}
हैं तो आपको वह प्रारूप दिखाई देगा जो आप चाहते हैं।
3 तरीके हैं जो आप कर सकते हैं:
1) लारवेल मॉडल का उपयोग करना
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) PHP strtotime का उपयोग करना
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) कार्बन का उपयोग करना
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
विधि एक:
strtotime()
तारीख को दिए गए प्रारूप में बदलने के लिए समय का उपयोग करना सबसे अच्छा प्रारूप है।
strtotime()
- एक यूनिक्स टाइमस्टैम्प में किसी भी अंग्रेजी पाठात्मक विवरण के बारे में पार्स
फ़ंक्शन को उम्मीद है कि उसे एक अंग्रेजी तारीख प्रारूप वाली स्ट्रिंग दी जाएगी और उस प्रारूप को यूनिक्स टाइमस्टैम्प (1 जनवरी 1970 से 00:00:00 यूटीसी के बाद सेकंड) में पार्स करने की कोशिश की जाएगी, जो अब दिए गए टाइमस्टैम्प के सापेक्ष है, या वर्तमान समय यदि अभी आपूर्ति नहीं की गई है।
उदाहरण:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
आउटपुट:
2007-02-26
विधि दो:
date_format()
- एक नया DateTime ऑब्जेक्ट लौटाएँ, और फिर दिनांक प्रारूपित करें:
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
आउटपुट:
2013/03/15 00:00:00
मुझे इसी तरह की समस्या थी, मैं प्रारूप बदलना चाहता था, लेकिन मैं चाहता था कि ब्लेड टेम्पलेट इंजन में भी प्रारूप को बदलने में सक्षम होने की लचीलापन है।
इसलिए, मैंने अपना मॉडल निम्नलिखित के रूप में सेट किया है:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
setToStringFormat
इस मॉडल के लिए इस प्रारूप का उपयोग करने के लिए सभी तिथियों सेट हो जाएगा।
मेरे लिए इसका लाभ यह है कि मेरे पास वह प्रारूप हो सकता है जिसे मैं म्यूटेटर के बिना चाहता था, क्योंकि म्यूटेटर के साथ, विशेषता को एक स्ट्रिंग अर्थ के रूप में लौटाया जाता है, ताकि ब्लेड टेम्पलेट में मुझे इस तरह से कुछ लिखना होगा अगर मैं चाहता था टेम्पलेट में प्रारूप बदलें:
{{ date('Y', strtotime($user->from_date)) }}
जो बहुत साफ नहीं है।
इसके बजाय, विशेषता को अभी भी कार्बन उदाहरण के रूप में लौटाया जाता है, हालांकि इसे पहले वांछित प्रारूप में लौटाया जाता है।
इसका मतलब है कि टेम्पलेट में मैं निम्नलिखित, क्लीनर, कोड लिख सकता हूं:
{{ $user->from_date->format('Y') }}
कार्बन उदाहरण में सुधार करने में सक्षम होने के अलावा, मैं टेम्पलेट में विशेषता पर विभिन्न कार्बन विधियों को भी कॉल कर सकता हूं।
इस दृष्टिकोण के लिए शायद एक नजर है; यदि यह अन्य लिपियों को प्रभावित करता है, तो मैं मॉडल के शीर्ष पर स्ट्रिंग प्रारूप को निर्दिष्ट करने के लिए यह एक अच्छा विचार नहीं है, दांव लगाना चाहता हूं। मैंने अब तक जो देखा है, वह नहीं हुआ है। इसने केवल उस मॉडल के लिए केवल डिफ़ॉल्ट कार्बन को बदल दिया है।
इस उदाहरण में, यह एक अच्छा सेट कार्बन प्रारूप हो सकता है जो मूल रूप से मॉडल स्क्रिप्ट के निचले भाग में था। यह एक विचार है, लेकिन यह प्रत्येक मॉडल के लिए अपना प्रारूप होगा।
इसके विपरीत, यदि आप प्रत्येक मॉडल के लिए एक ही प्रारूप में हैं तो इसके बजाय अपने AppServiceProvider में। यह सिर्फ कोड neater रखने के लिए और बनाए रखने के लिए आसान होगा।
कभी-कभी दिनांक प्रारूप को बदलना ठीक से काम नहीं करता है, खासकर लारवेल में। तो उस स्थिति में, इसका उपयोग करना बेहतर है:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
फिर आप "1970-01-01" जैसी त्रुटि से बच सकते हैं!
m/d/y
या d-m-y
प्रारूप में तिथियों की अवहेलना की जाती है: यदि विभाजक स्लैश है (/)
, तो अमेरिकी m/d/y
मान लिया गया है; जबकि यदि विभाजक पानी का छींटा (-)
या बिंदु है (.)
, तो यूरोपीय d-m-y
प्रारूप मान लिया गया है। यदि, हालांकि, वर्ष दो अंकों के प्रारूप में दिया गया है और विभाजक एक डैश है (-)
, तो तारीख स्ट्रिंग के रूप में पार्स की जाती है y-m-d
। php.net/manual/en/function.strtotime.php
Laravel में आप ऐप / हेल्पर / हेल्पर.php के अंदर एक फंक्शन जोड़ सकते हैं
function formatDate($date = '', $format = 'Y-m-d'){
if($date == '' || $date == null)
return;
return date($format,strtotime($date));
}
और इस फंक्शन को इस तरह किसी भी कंट्रोलर पर कॉल करें
$start_date = formatDate($start_date,'Y-m-d');
आशा है कि इससे सहायता मिलेगी!
from_date
कॉलम की आवश्यकता होती है तो तिथि प्रारूप को बदलने की आवश्यकता नहीं होती है ।