পিএইচপি তে গত মাসের তারিখ পাচ্ছেন


86

আমি গত মাসের তারিখ পেতে চাই। আমি এটি লিখেছি:

$prevmonth = date('M Y');

যা আমাকে চলতি মাস / বছর দেয়। যদি আমি ব্যবহার করা উচিত আমি বলতে পারবো না strtotime, mktime। টাইমস্ট্যাম্প কিছু? পুনরায় সেট করার জন্য আমার কি পরে কিছু যুক্ত করার দরকার আছে যাতে আমার সাইটে সমস্ত টাইমস্ট্যাম্পের জন্য সমস্ত কিছু জুড়ে তারিখটি গত মাসে সেট করা না যায়? আমি আরটিএম করার চেষ্টা করছি তবে এটি বের করা আমার পক্ষে শক্ত hard

উত্তর:


212

গত মাসের তারিখটি পাওয়া সহজ

echo date("Y-n-j", strtotime("first day of previous month"));
echo date("Y-n-j", strtotime("last day of previous month"));

3 নভেম্বর রিটার্ন

2014-10-1
2014-10-31

7
এটি যথেষ্ট পরিমাণে ভাল নয় এবং আপনার $time = strtotime('2011-03-30 01:01:01'); echo date('r', strtotime('-1 month', $time));কোডগুলিতে ত্রুটি সৃষ্টি করতে পারে: এইটি ফেরত দেবে বুধ, 02 মার্চ ২০১১ 01:01:01 - ফেব্রুয়ারি নয়! strtotime('first day of previous month')পরিবর্তে ব্যবহার করুন
অস্টিন

@ ওজিচেক আপনি যখন মার্চ 3 এ চালাবেন এটি 1 এবং 31 অক্টোবর ফিরে আসে?
অজানা দেব

$ ডেটা_ডে_স্ট্রিস্ট = স্ট্রোটোটাইম ("পূর্ববর্তী মাস", স্ট্রোটোটাইম ('2011-03-30 01:01:01')); আপনি ২০১১ সালের ফেব্রুয়ারি পাবেন
রদ্রিগো সার্জেডেলো

33
echo strtotime("-1 month");

এটি গত মাসের টাইমস্ট্যাম্পটিকে ঠিকঠাক আউটপুট দেবে। আপনার পরে আর কিছু রিসেট করার দরকার নেই। এর পরে যদি আপনি এটি কোনও ইংরেজী ফর্ম্যাটে চান তবে টাইমস্ট্যাম্পটি ফর্ম্যাট করতে আপনি তারিখ () ব্যবহার করতে পারেন , যেমন:

echo date("Y-m-d H:i:s",strtotime("-1 month"));

12
আজ 31 অক্টোবর, 2012 date তারিখ ("ওয়াইএমডি", স্ট্রোটোটাইম ("- 1 মাস")); 2012-10-01 এ ফিরে আসে। :(
টড

7
পছন্দ করুন -1 মাস লেখার মতোই -30 দিন যা বছরের নির্দিষ্ট তারিখগুলিতে হয় 1 মাস এড়িয়ে যায় বা একই মাসে থাকে, সুতরাং এই পদ্ধতিতে সতর্ক থাকুন।
সিল্কফায়ার

এই সমাধান ব্যবহার করবেন না! পূর্ববর্তী মন্তব্যগুলি সঠিক, আপনার মধ্যে এমন ত্রুটি থাকবে যা কেবলমাত্র মাসের 31 তম দিনে (বা মার্চ 29,30,31 এ) ট্রিগার করা হবে
কিশোর

19
$prevmonth = date('M Y', strtotime("last month"));

4
এটি তারিখের সমান ('এম ওয়াই', স্ট্রোটোটাইম ("- 1 মাস")), আপনি যদি তারিখের মতো কিছু করেন ('এম ওয়াই', স্ট্রোটোটাইম ("গত মাসে" 2017-07-31 ")) এটি ফিরে আসবে 2017-07-01, তাই সাবধান! তারিখ ('এম ওয়াই', স্ট্রোটোটাইম ('2017-07-31 পূর্ববর্তী মাসের প্রথম দিন')) আপনাকে যা দেবে তা দেবে
শাদোয়েব

12

ভুল উত্তরগুলি হ'ল:

$lastMonth = date('M Y', strtotime("-1 month"));
$lastDate = date('Y-m', strtotime('last month'));

কারণটি হ'ল যদি চলতি মাসটি 30+ দিন হয় তবে আগের মাসটি 29 এবং কম less সর্বশেষ মাসটি বর্তমান মাসের সমান হবে।

যেমন

If $currentMonth = '30/03/2016';
echo $lastMonth = date('m-Y', strtotime("-1 month")); => 03-2016
echo $lastDate = date('Y-m', strtotime('last month')); => 2016-03

সঠিক উত্তরটি হ'ল:

echo date("m-Y", strtotime("first day of previous month")); => 02-2016
echo sprintf("%02d",date("m")-1) . date("-Y"); => 02-2016
echo date("m-Y",mktime(0,0,0,date("m")-1,1,date("Y"))); => 02-2016

4
আপনি যদি প্রতিধ্বনি স্প্রিন্টফ ("% 02 ডি", তারিখ ("এম") - 1 মুছে ফেলেন তবে আমি উপগ্রহ করব। তারিখ ("- ওয়াই"); => 02-2016। যদি আমরা জানুয়ারিতে থাকি তবে এটি গত বছরের 12 টি নয়, এই বছরের 0 টি উত্তর দেয়!
তামা

6

আপনি যদি কেবল আগের মাসে পেতে চান, তবে আপনি নীচের মত ব্যবহার করতে পারেন

$prevmonth = date('M Y', strtotime('-1 months'));

আপনি যদি আগের মাসের একই দিনগুলি পেতে চান তবে আপনি নীচের মত ব্যবহার করতে পারেন ..

$prevmonth = date('M Y d', strtotime('-1 months'));

আপনি যদি পূর্ববর্তী মাসের শেষ তারিখ পেতে চান তবে আপনি নীচের মত ব্যবহার করতে পারেন ...

$prevmonth = date('M Y t', strtotime('-1 months'));

আপনি যদি আগের মাসের প্রথম তারিখ পেতে চান তবে আপনি নীচের মত ব্যবহার করতে পারেন ...

$prevmonth = date('M Y 1', strtotime('-1 months'));

4
মাসের 31 তম জন্য সাবধান! এটি আপনাকে চলতি মাসের 1 ম দিন দেবে! উপরে দেখুন.
শাদোয়েব

6
echo date('Y',strtotime("-1 year"));        //last year<br>
echo date('d',strtotime("-1 day"));     //last day<br>
echo date('m',strtotime("-1 month"));       //last month<br>

4
বর্তমান উত্তর 2018/03/31 এ উত্তরটি সঠিক নয়। এছাড়াও মত বিস্তারিত এই
Ngoc ভিয়েতনামে

4

আগের মাসগুলি যখন বর্তমানের চেয়ে ছোট হয় তখন এটি একটি ভুল পেয়েছে।

echo date("Y-m-d H:i:s",strtotime("-1 month"));

30 শে মার্চ চেষ্টা করুন এবং আপনি 2012-02 এর পরিবর্তে 2012-03-01 পাবেন ...

আরও ভাল সমাধান নিয়ে কাজ করা ...


4
এই উত্তরটি সঠিক (-1 মাস সব ক্ষেত্রে সঠিকভাবে কাজ করবে না)। পূর্ববর্তী মাসের জন্য, স্ট্রোটোটাইম ('গত মাসে') ব্যবহার করুন।
মাইকে

4
গত মাসে বা -1 মাস একই মান প্রদান করে।
এটিয়েন ডুপুইস

4
public function getLastMonth() {
    $now = new DateTime();
    $lastMonth = $now->sub(new DateInterval('P1M'));
    return $lastMonth->format('Ym');
}

4
2015-10-31পিএইচপি 5.5 এবং 5.6.11 এ কাজ করবে না। আপনি পাবেন 201510- হিসাবে একই আচরণ strtotime('- 1 month)
pmayer

2

কোনও নির্দিষ্ট তারিখের জন্য পূর্ববর্তী মাসে পেতে এই সংক্ষিপ্ত কোডটি ব্যবহার করুন:

$tgl = '25 january 2012';

$prevmonth = date("M Y",mktime(0,0,0,date("m", strtotime($tgl))-1,1,date("Y", strtotime($tgl))));
echo $prevmonth;

ফলাফল ডিসেম্বর ২০১১. পূর্ববর্তী মাসের সাথে সংক্ষিপ্ত দিন সহ এক মাসে কাজ করে।


2
$lastMonth = date('M Y', strtotime("-1 month"));
var_dump($lastMonth);
$lastMonth = date('M Y', mktime(0, 0, 0, date('m') - 1, 1, date('Y')));
var_dump($lastMonth);

4
কোড নিজেই কিছুটা স্ব-বর্ণনামূলক হতে পারে তবে এটি কেবলমাত্র কোড দেওয়ার চেয়ে আপনার উত্তরটি ব্যাখ্যা করতে অন্য ব্যবহারকারীদের পক্ষে সহায়ক।
টার্নারজ

1

আপনি ব্যবহার করতে পারেন strtotime, যা এই ধরণের পরিস্থিতিতে দুর্দান্ত:

$timestamp = strtotime('-1 month');
var_dump(date('Y-m', $timestamp));

আপনি পাবেন:

string '2009-11' (length=7)

1
$time = mktime(0, 0, 0, date("m"),date("d")-date("t"), date("Y"));
$lastMonth = date("d-m-Y", $time);

বা

$lastMonth = date("m-Y", mktime() - 31*3600*24);

30.03.2012 এ কাজ করে


1

ওহ আমি এটিকে বুঝতে পেরেছি, যদি আপনি একইরকম সমস্যা না পান তবে দয়া করে এড়িয়ে যান:

$prevmonth = date("M Y",mktime(0,0,0,date("m")-1,1,date("Y")));

1

আমি যে সেরা সমাধানটি পেয়েছি তা হ'ল:

function subtracMonth($currentMonth, $monthsToSubtract){
        $finalMonth = $currentMonth;
        for($i=0;$i<$monthsToSubtract;$i++) {
            $finalMonth--;
            if ($finalMonth=='0'){
                $finalMonth = '12';
            }

        }
        return $finalMonth;

    }

সুতরাং আমরা যদি 3 (মার্চ) এ থাকি এবং আমরা 5 মাস বিয়োগ করতে চাই তা হবে

subtractMonth(3,5);

যা 10 (অক্টোবর) দেবে। যদি বছরটিও পছন্দসই হয় তবে কেউ এটি করতে পারে:

function subtracMonth($currentMonth, $monthsToSubtract){
    $finalMonth = $currentMonth;
    $totalYearsToSubtract = 0;
    for($i=0;$i<$monthsToSubtract;$i++) {
        $finalMonth--;
        if ($finalMonth=='0'){
            $finalMonth = '12';
            $totalYearsToSubtract++;
        }

    }
    //Get $currentYear
    //Calculate $finalYear = $currentYear - $totalYearsToSubtract 
    //Put resulting $finalMonth and $finalYear into an object as attributes
    //Return the object

}

0

এটা আমার জন্য কাজ করে:

আজ: 31/03/2012

echo date("Y-m-d", strtotime(date('m', mktime() - 31*3600*24).'/01/'.date('Y').' 00:00:00')); // 2012-02-01
echo  date("Y-m-d", mktime() - 31*3600*24); // 2012-02-29

শুধুমাত্র 58.3 (3)% ক্ষেত্রে কাজ করে। ফেব্রুয়ারি, এপ্রিল, জুন, সেপ্টেম্বর এবং নভেম্বর সম্পর্কে কী হবে? তাদের 31 দিন নেই।
তাজ

0

আপনি যদি আগের মাসের প্রথম তারিখ পেতে চান তবে আপনি নীচের মতো ব্যবহার করতে পারেন ... $prevmonth = date('M Y 1', strtotime('-1 months'));কি? প্রথম তারিখ সর্বদা 1: D হবে


অক্টোবর 31, 2012. 2012-10-01 এ ফিরে এসেছে
আকিরা ইয়ামামোটো

0

এই প্রশ্নটি বেশ পুরানো তবে যাইহোক এখানে চলে। আপনি যদি কেবল আগের মাসটি পেতে চেষ্টা করে থাকেন এবং দিনটি কোনও ব্যাপার না তবে আপনি এটি ব্যবহার করতে পারেন:

$date = '2014-01-03';

$dateTime = new DateTime($date);

$lastMonth = $dateTime->modify('-' . $dateTime->format('d') . ' days')->format('F Y');

echo $lastMonth; // 'December 2013'

0

সহজভাবে গত মাসে পান।

উদাহরণ:

আজ: 2020-09-02

কোড:

echo date('Y-m-d', strtotime(date('Y-m-d')." -1 month"));

ফলাফল:

2020-08-02


স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম! সম্ভবত, আপনার যদি সেই দিনটি হয় 31এবং মাসটি জানুয়ারী বা আগস্ট না হয় (যেমন 2020 May 31হয়ে যায় 2020 April 31,
যেটির

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