लार्वा दृश्य पृष्ठ में दिनांक स्वरूप बदलें


95

मैं डेटाबेस से लाए गए दिनांक स्वरूप को बदलना चाहता हूं। अब मुझे 2016-10-01 मिला। {{$user->from_date}}मैं लार्वा 5.3 में प्रारूप 'डमी' को बदलना चाहता हूं

{{ $user->from_date->format('d/m/Y')}}

जवाबों:


149

इसे इस्तेमाल करे:

date('d-m-Y', strtotime($user->from_date));

यह दिनांक को d-m-Yआपके द्वारा दिए गए या जो भी प्रारूप में रूपांतरित करेगा ।

नोट: यह समाधान एक सामान्य समाधान है जो php और इसके किसी भी ढांचे के लिए काम करता है। एक लारावेल विशिष्ट विधि के लिए, हमेलराज द्वारा प्रदान किए गए समाधान का प्रयास करें ।


2
@ user3386779: यह काम करता है लेकिन सबसे सुंदर समाधान नहीं है :) लारवेल के पास इस काम को करने के लिए कुछ तंत्र हैं। यदि आप मेरा उत्तर चुनते हैं तो आपको एक ही स्थान पर सेट तिथि प्रारूप की आवश्यकता होती है और हर बार जब आपको प्रदर्शन from_dateकॉलम की आवश्यकता होती है तो तिथि प्रारूप को बदलने की आवश्यकता नहीं होती है ।
मारेक स्कीबा

@MarekSkiba मैंने अपने उत्तर में एक ही बात का उल्लेख किया है :)
मयंक पांडेयज

उदाहरण के लिए भाषा बदलने के बारे में क्या है -> महीनों के नामों के लिए 'एस'
अल्बर्टो एक्यूना

1
@ सादिक से सहमत आपको $ उपयोगकर्ता-> from_date-> प्रारूप ('डी / एम / वाई') का उपयोग करना चाहिए
एरिक लार्सन

1
महान और बहुत ही सरल उपाय।
मुदासिर 23

130

लारवेल में कार्बन का उपयोग अच्छा है

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

हाँ, और क्या जब $ उपयोगकर्ता- from_date है null?
lewis4u

1
@ lewis4u यदि आप इसमें शून्य मान पास करते हैं तो parse(null)यह वर्तमान तिथि समय के रूप में परिवर्तित हो जाएगा
Hamelraj

1
सही है ... और यह कुछ मामलों के लिए अच्छा नहीं है! तो बाहर देखो!
lewis4u

78

अपने मॉडल सेट में:

protected $dates = ['name_field'];

आपके विचार में:

{{ $user->from_date->format('d/m/Y') }}

काम करता है


3
मुझे लगता है कि ऐसा करने के लिए यह सबसे "लार्वा तरीका" है, इसलिए इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए।
कोडहॉक

मैं भी सहमत हूँ, यह सबसे अच्छा तरीका है
JonaPkr

यह मेरे लिए काम नहीं करता है। मैं डेटाइम टाइम टाइप और टाइमस्टैम्प कॉलम टाइप पर सचेत करता हूं, लेकिन अभी भी त्रुटि हैCall to a member function format() on null
बारिक धर्मवन

36

आप देख सकते हैं 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 }}हैं तो आपको वह प्रारूप दिखाई देगा जो आप चाहते हैं।


सहमत हूं कि यह
लार्वा के

1
केवल नुकसान यह है कि यह देखने के लिए एक स्ट्रिंग लौटाएगा; इसलिए यदि आप एक ही दृश्य में अलग-अलग दिनांक प्रारूप दिखाना चाहते हैं तो आपको कार्बन के साथ तारीख को फिर से लिखना होगा।
JustCarty

इसके बारे में क्षमा करें, यह एक म्यूटेटर है क्योंकि यह setFromDateAttribute के बजाय getFromDateAttribute का उपयोग करता है। क्या मैं जानता हूँ कि उत्परिवर्ती सेट का उपयोग करता है और गौण उपयोग मिलता है
Shulz

यदि स्तंभ शून्य है तो यह रिटर्न करंट डेट
बेरिक धर्मवन


11

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);

10

विधि एक:

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 

5

आप उपयोग कर सकते हैं Carbon::createFromTimestamp

ब्लेड

{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}

4

मुझे इसी तरह की समस्या थी, मैं प्रारूप बदलना चाहता था, लेकिन मैं चाहता था कि ब्लेड टेम्पलेट इंजन में भी प्रारूप को बदलने में सक्षम होने की लचीलापन है।

इसलिए, मैंने अपना मॉडल निम्नलिखित के रूप में सेट किया है:

<?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 रखने के लिए और बनाए रखने के लिए आसान होगा।


0

कभी-कभी दिनांक प्रारूप को बदलना ठीक से काम नहीं करता है, खासकर लारवेल में। तो उस स्थिति में, इसका उपयोग करना बेहतर है:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

फिर आप "1970-01-01" जैसी त्रुटि से बच सकते हैं!


यह लार्वा मुद्दा नहीं है, कि php से संबंधित है। इसे पढ़ें: विभिन्न घटकों के बीच विभाजक को देखकर m/d/yया d-m-yप्रारूप में तिथियों की अवहेलना की जाती है: यदि विभाजक स्लैश है (/), तो अमेरिकी m/d/yमान लिया गया है; जबकि यदि विभाजक पानी का छींटा (-)या बिंदु है (.), तो यूरोपीय d-m-yप्रारूप मान लिया गया है। यदि, हालांकि, वर्ष दो अंकों के प्रारूप में दिया गया है और विभाजक एक डैश है (-), तो तारीख स्ट्रिंग के रूप में पार्स की जाती है y-m-dphp.net/manual/en/function.strtotime.php
मयंक पांडेयेज़

0

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');

आशा है कि इससे सहायता मिलेगी!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.