লারাভেল ভিউ পৃষ্ঠাতে তারিখের ফর্ম্যাটটি পরিবর্তন করুন


94

আমি ডাটাবেস থেকে প্রাপ্ত তারিখের ফর্ম্যাটটি পরিবর্তন করতে চাই। এখন আমি 2016-10-01 পেয়েছি 1 {{$user->from_date}}আমি লারাভেল 5.3 এ 'dmy' ফর্ম্যাটটি পরিবর্তন করতে চাই

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

উত্তর:


145

এটা চেষ্টা কর:

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

এটি তারিখকে রূপান্তর করবে d-m-Yবা আপনি যে কোনও ফর্ম্যাট দিয়েছেন।

দ্রষ্টব্য: এই দ্রবণটি একটি সাধারণ সমাধান যা পিএইচপি এবং এর কোনও ফ্রেমওয়ার্কের জন্য কাজ করে। লারাভেল নির্দিষ্ট পদ্ধতির জন্য হামেলরাজের সরবরাহিত সমাধানটি চেষ্টা করুন ।


4
@ ব্যবহারকারী 3386779: এটি কাজ করে তবে সবচেয়ে সুন্দর সমাধান নয় :) লারাভেলের কাছে এই জিনিসগুলি করার কয়েকটি ব্যবস্থা আছে isms আপনি যদি আমার উত্তরটি চয়ন করেন তবে আপনার এক জায়গায় স্থির তারিখের ফর্ম্যাট প্রয়োজন এবং প্রতিবার আপনার from_dateকলাম প্রদর্শন করার সময় তারিখের ফর্ম্যাটটি পরিবর্তন করার দরকার নেই ।
মারেক স্কিবা

@ মেরেকস্কিবা আমি আমার উত্তরে একই জিনিসটি উল্লেখ করেছি :)
মায়াঙ্ক পান্ডেজে

উদাহরণস্বরূপ ভাষা কী পরিবর্তন করতে হবে -> মাসের নামগুলির জন্য 'এস'
আলবার্তো আকুয়া

4
@ সাদিকের সাথে সম্মত হন আপনার $ ব্যবহারকারী-> থেকে_ তারিখ-> ফর্ম্যাটটি ('ডি / এম / ওয়াই') ব্যবহার করা উচিত
এরিক লারসন

4
দুর্দান্ত এবং খুব সহজ সমাধান।
মুদ্দাসির 23

129

লারাভেলে কার্বন ব্যবহার করুন এটির ভাল

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

হ্যাঁ, এবং $ ব্যবহারকারী-> থেকে_ তারিখটি কখন null?
lewis4u

4
@ লেউইস ৪ইউ যদি আপনি নাল মানটি এতে পাস করেন তবে parse(null)তা বর্তমান তারিখের সময় হিসাবে রূপান্তরিত হবে
হামেলরাজ ১

4
সঠিক ... এবং এটি কিছু ক্ষেত্রে ভাল নয়! তাই দেখুন!
লুইস

73

আপনার মডেল সেটে:

protected $dates = ['name_field'];

আপনার দৃষ্টিতে পরে:

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

কাজ করে


4
আমি মনে করি এটি করার জন্য এটি সবচেয়ে "লারভেল ওয়ে" তাই এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত।
কোডচাক

আমিও একমত, এটি সেরা উপায়
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 }}যে ফর্ম্যাটটি চান তা দেখতে পাবেন।


সম্মত হন যে
লারাভেলের

4
একমাত্র অসুবিধা হ'ল এটি দৃশ্যে একটি স্ট্রিং ফিরিয়ে দেবে; সুতরাং আপনি যদি একই ভিউতে বিভিন্ন তারিখের ফর্ম্যাটগুলি দেখাতে চান তবে আপনাকে কার্বনের সাথে তারিখটি পুনঃস্থাপন করতে হবে।
জাস্টকার্টি

এটির জন্য দুঃখিত, এটি কি রূপান্তরকারী কারণ এটি সেটফ্রমডেটএট্রিবিউটের পরিবর্তে getFromDateAttribute ব্যবহার করে। আমি যা জানি মিউটেটর সেট এবং অ্যাক্সেসর ব্যবহারগুলি ব্যবহার করে তা থেকে
শুল্জ

এই রিটার্নের বর্তমান তারিখটি যদি কলামটি বাতিল হয়
বারিক ধর্মওয়ান


10

3 টি উপায় রয়েছে যা আপনি করতে পারেন:

1) লারাভেল মডেল ব্যবহার

$user = \App\User::find(1);

$newDateFormat = $user->created_at->format('d/m/Y');

dd($newDateFormat);

2) পিএইচপি স্ট্রোটোটাইম ব্যবহার করে

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

9

পদ্ধতি এক:

strtotime()তারিখটি প্রদত্ত ফর্ম্যাটে পরিবর্তনের জন্য সময় ব্যবহার করা সেরা বিন্যাস।

strtotime() - ইউনিক্স টাইমস্ট্যাম্পে যে কোনও ইংরেজি পাঠ্য তারিখের সময় বিবরণ সম্পর্কে পার্স করুন

ফাংশনটি একটি ইংরাজী তারিখের ফর্ম্যাটযুক্ত একটি স্ট্রিং দেওয়ার প্রত্যাশা করে এবং সেই ফর্ম্যাটটিকে ইউনিক্স টাইমস্ট্যাম্পে (জানুয়ারীর 1 জানুয়ারি 00:00:00 ইউটিসি থেকে সেকেন্ডের সংখ্যা) পার্স করার চেষ্টা করবে, এখন যে টাইমস্ট্যাম্পের তুলনায়, বা বর্তমান সময় যদি এখন সরবরাহ করা হয় না।

উদাহরণ:

<?php
$timestamp = strtotime( "February 26, 2007" );  
print date('Y-m-d', $timestamp );
?>

আউটপুট:

2007-02-26

পদ্ধতি দুটি:

date_format() - একটি নতুন ডেটটাইম অবজেক্ট ফিরিয়ে দিন এবং তারপরে তারিখটি ফর্ম্যাট করুন:

<?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

আমার অনুরূপ সমস্যা ছিল, আমি ফর্ম্যাটটি পরিবর্তন করতে চেয়েছিলাম, তবে আমি ফলক টেম্পলেট ইঞ্জিনেও ফর্ম্যাটটি পরিবর্তন করতে সক্ষম হওয়ার নমনীয়তা চেয়েছিলাম wanted

আমি, তাই আমার মডেলটিকে নিম্নলিখিত হিসাবে সেট আপ করি:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

\Carbon\Carbon::setToStringFormat('d-m-Y');

class User extends Model
{
    protected $dates = [
        'from_date',
    ];
}

setToStringFormatএই মডেল জন্য এই বিন্যাসে ব্যবহার করার জন্য তারিখ সেট হবে।
আমার জন্য এটির সুবিধাটি হ'ল আমি যে ফরম্যাটটি চাইছিলাম তা আমি মিউটর ছাড়াই পেতে পারি, কারণ মিউটরটির সাথে, বৈশিষ্ট্যটি একটি স্ট্রিং হিসাবে ফিরে আসে যার অর্থ ব্লেড টেম্পলেটে আমি চাইলে এই জাতীয় কিছু লিখতে হত I টেমপ্লেটে ফর্ম্যাটটি পরিবর্তন করুন:

{{ date('Y', strtotime($user->from_date)) }}

যা খুব পরিষ্কার নয়।

পরিবর্তে, গুণটি এখনও কার্বন উদাহরণ হিসাবে ফিরে আসে, তবে এটি প্রথমে পছন্দসই বিন্যাসে ফিরে আসে।
এর অর্থ এই যে টেমপ্লেটে আমি নিম্নলিখিত, ক্লিনার, কোডটি লিখতে পারি:

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

কার্বন ইনস্ট্যান্সটির পুনরায় ফর্ম্যাট করতে সক্ষম হওয়া ছাড়াও, আমি টেমপ্লেটের বৈশিষ্ট্যে বিভিন্ন কার্বন পদ্ধতিও কল করতে পারি।

এই পদ্ধতির জন্য সম্ভবত একটি তদারকি রয়েছে; আমি বাজি নিয়ে যাচ্ছি মডেলটির শীর্ষে স্ট্রিং ফর্ম্যাটটি নির্দিষ্ট করা ভাল ধারণা নয় যদি এটি অন্যান্য স্ক্রিপ্টগুলিকে প্রভাবিত করে। আমি এ পর্যন্ত যা দেখেছি, তা থেকে হয়নি। এটি কেবলমাত্র সেই মডেলের জন্য কেবলমাত্র ডিফল্ট কার্বনকে পরিবর্তন করেছে।

এই উদাহরণস্বরূপ, এটি কার্বন ফর্ম্যাটটি মডেল স্ক্রিপ্টের নীচে যা ছিল মূলত ফিরে আসতে পারে set এটি একটি উদ্ভাসিত ধারণা, তবে এটি প্রতিটি মডেলের নিজস্ব ফর্ম্যাট রাখার জন্য কাজ করবে।
বিপরীতে, যদি আপনি প্রতিটি মডেলের জন্য একই ফর্ম্যাটটি রেখে থাকেন তবে তার পরিবর্তে আপনার অ্যাপসেস্প্রোভাইডারটিতে। এটি কেবল কোডটি আরও সুন্দর এবং বজায় রাখা সহজ রাখবে।


0

কখনও কখনও তারিখের ফর্ম্যাট পরিবর্তন করা সঠিকভাবে কাজ করে না, বিশেষত লারাভেলে। সুতরাং সেই ক্ষেত্রে, এটি ব্যবহার করা ভাল:

$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-dphp.net/manual/en/function.strtotime.php
মায়াঙ্ক পান্ডেজ

0

লারাভেলে আপনি অ্যাপ / হেল্পার / হেল্পার.এফপি মত একটি ফাংশন যুক্ত করতে পারেন

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

আশা করি এটা সাহায্য করবে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.