ডেটটাইম অবজেক্ট হিসাবে ডেট_মোডাইফাই ব্যবহার করে পিএইচপি-তে চলতি মাসের প্রথম দিন


157

আমি এই সপ্তাহের সোমবারটি সাথে পেতে পারি:

$monday = date_create()->modify('this Monday');

আমি এই মাসের প্রথম দিকে একই স্বাচ্ছন্দ্যে পেতে চাই। আমি কীভাবে এটি অর্জন করতে পারি?


আহ, আমি একটি সমস্যায় পড়েছি, জন কনডি যে প্রশ্নের উত্তর দিয়েছিল তার উত্তর দিয়েছিল, তবে আমি উল্লেখ করতে ভুলে গেছি যে, এটির জন্য 5.2 তে কাজ করা দরকার, তাই আমি আসলে মিঃ-
স্কের

উত্তর:


260

পিএইচপি 5.3 কাজ করার প্রয়োজন (পিএইচপি 5.3 এ "প্রথম দিন" চালু করা হয়েছে)। অন্যথায় উপরোক্ত উদাহরণটিই এটি করার একমাত্র উপায়:

<?php
    // First day of this month
    $d = new DateTime('first day of this month');
    echo $d->format('jS, F Y');

    // First day of a specific month
    $d = new DateTime('2010-01-19');
    $d->modify('first day of this month');
    echo $d->format('jS, F Y');

    // alternatively...
    echo date_create('2010-01-19')
      ->modify('first day of this month')
      ->format('jS, F Y');

পিএইচপি 5.4+ এ আপনি এটি করতে পারেন:

<?php
    // First day of this month
    echo (new DateTime('first day of this month'))->format('jS, F Y');

    echo (new DateTime('2010-01-19'))
      ->modify('first day of this month')
      ->format('jS, F Y');

আপনি যদি এটি করার জন্য একটি সংক্ষিপ্ত উপায় পছন্দ করেন এবং সংখ্যাসূচক মানগুলিতে ইতিমধ্যে বছর এবং মাস রয়েছে, আপনি ব্যবহার করতে পারেন date():

<?php
    echo date('Y-m-01'); // first day of this month
    echo date("$year-$month-01"); // first day of a month chosen by you

9
মনে রাখবেন যে আপনি ->modify()যদি চলতি মাসের প্রথম দিনটি চান তবে আপনাকে যেতে হবে না । আপনি পাস করতে পারেন 'first day of this month'মত সরাসরি তারিখসময় কন্সট্রাকটর করুন: $date = new DateTime('first day of this month')। শুধু বলছি ...
ঝুনিয়েট

333

আমি যা ব্যবহার করি তা এখানে।

মাসের প্রথম দিন:

date('Y-m-01');

মাসের শেষ দিন:

date('Y-m-t');

10
এটি সমাধান করার জন্য এটি এখন পর্যন্ত সবচেয়ে সহজ এবং সর্বাধিক পঠনযোগ্য উপায়, যদি আপনার প্রয়োজন কেবলমাত্র তারিখের একটি স্ট্রিং প্রতিনিধিত্ব।
মার্কাস অমলথিয়া ম্যাগনসন

5
মাসের শেষ দিনটি তখন ব্যবহার করে ধরে নেওয়া যেতে পারে date('Y-m-t');
মার্ক টমলিন

7
এফওয়াইআই: তারিখের 'টি' ('ওয়াইএম-টি') সর্বদা সেই মাসে খুব বেশি দিন উপস্থিত থাকে। চলতি মাসের শেষ দিনটি পাওয়ার দুর্দান্ত এবং সহজ উপায়।
পাস্কেল ক্লেইন

1
আমি যদি সপ্তাহটির দিনটি পাওয়ার চেষ্টা করতে এটি ব্যবহার করি date('w', '2015-05-01');তবে আমি আসল দিনের পরিবর্তে আগের দিনটি শেষ করব। (এটি আমাকে সঠিক 5 এর পরিবর্তে 4 দেয়)।
পিবিউইউবিডি 15'15

5
এটি কেবল উজ্জ্বল। আমি এটির মাধ্যমে মাসে $monthStart = date('Y-m-01 00:00:00'); $monthEnd = date('Y-m-t 23:59:59');
সময়টির

32

আপনার যা প্রয়োজন তা হ'ল:

$week_start = strtotime('last Sunday', time());
$week_end = strtotime('next Sunday', time());

$month_start = strtotime('first day of this month', time());
$month_end = strtotime('last day of this month', time());

$year_start = strtotime('first day of January', time());
$year_end = strtotime('last day of December', time());

echo date('D, M jS Y', $week_start).'<br/>';
echo date('D, M jS Y', $week_end).'<br/>';

echo date('D, M jS Y', $month_start).'<br/>';
echo date('D, M jS Y', $month_end).'<br/>';

echo date('D, M jS Y', $year_start).'<br/>';
echo date('D, M jS Y', $year_end).'<br/>';

4
এটি একটি ঝরঝরে সমাধান, তবে strtotime('first day of this month', time())প্রথম দিনটি ফিরে আসবে, এবং সময়টি বর্তমানের মতো। সুতরাং সেখানে, এটি প্রথম দিন 0:00 টা বাজে, তার প্রথম দিন এবং সময় যেমন এখন। এটি এটি স্থির করে strtotime('first day of this month 00:00:00', time())
ক্লে এইচ। ভারভাস

22

বর্তমানে আমি এই সমাধানটি ব্যবহার করছি:

$firstDay = new \DateTime('first day of this month');
$lastDay = new \DateTime('last day of this month');

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

$firstDay = new \DateTime('first day of this month 00:00:00');
$lastDay = new \DateTime('first day of next month 00:00:00');

এটি দুর্দান্ত, তবে মাসের আসল প্রথম দিনটিতে আমার কিছু সমস্যা হচ্ছে। সুতরাং, আজ যদি 1 লা সেপ্টেম্বর, 11 টা। আমি পহেলা আগস্ট পাব! আমার আসলে এটি আজ "1 ম" কিনা তা পরীক্ষা করা দরকার এবং যদি এখন "এখন" ব্যবহার করেন। অদ্ভুত (Php 7.3.9)
জ্যাকব ক্রিস্টেনসেন

@ জ্যাকব ক্রিসটেনসেন এখনও তা অনুভব করেন নি। আপনি কিভাবে এটি স্থির করলেন?
নিকোলা পেটকানস্কি

খুব সত্য, পিএইচপি seams এই প্রথম এবং শেষ সম্পর্কে খুব শীতল হতে না। ; n = নতুন \ ডেটটাইম ('প্রথম দিন'।। (নতুন \ তারিখটাইম ()) -> ফর্ম্যাট ('এফ')); "জানুয়ারির প্রথম দিন"। সপ্তাহের সোমবারে একই ঘটনা ঘটে এবং এটি কিছুটা ... হতাশ :)
জ্যাকব ক্রিস্টেনসেন


6

পিএইচপি 5.2 এ আপনি ব্যবহার করতে পারেন:

<? $d = date_create();
print date_create($d->format('Y-m-1'))->format('Y-m-d') ?>

4

কুরুচিপূর্ণ, (এবং উপরে আপনার পদ্ধতি কলটি ব্যবহার করে না) তবে কাজ করে:

echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));   

বিষয় ছাড়াই কিন্তু আপনি কীভাবে একই দৃশ্যের আওতায় মাসের শেষ দিনটি গণনা করবেন।
LoneWOLFs

@ লোনওএলএফএফ last day of {$month} {$year}বা last day of this monthউভয়ই কাজ করে। তবে মনে রাখবেন যে Dece মাসটি "ডেসেমেম্বার" হিসাবে ভেবে সমস্তভাবে "জানুয়ারী" এর মতো মাসের নাম সম্বলিত একটি স্ট্রিং হতে হবে। অথবা আপনি সহজভাবে ব্যবহার করতে পারেন date('Y-m-t');
মার্ক টমলিন

3

আপনি এটি এর মতো করতে পারেন:

$firstday = date_create()->modify('first day January 2010');

3

আমি এটি কোনও দৈনিক ক্রোন জব দিয়ে ব্যবহার করি কিনা তা পরীক্ষা করতে আমার কোনও অনুমোদিত মাসের প্রথম দিনটিতে আমার কোনও ইমেল প্রেরণ করা উচিত কিনা তা যাচাই করতে। এটি অন্যান্য উত্তরের চেয়ে কয়েকটি লাইন তবে শিলা হিসাবে শক্ত।

//is this the first day of the month?
$date = date('Y-m-d');
$pieces = explode("-", $date);
$day = $pieces[2];

//if it's not the first day then stop
if($day != "01") {

     echo "error - it's not the first of the month today";
     exit;

}

2

তারিখ পদ্ধতি ব্যবহার করে, আমাদের ফলাফলটি পাওয়া উচিত। অর্থাত; তারিখ ('এন / ডি / এল', এমকিটাইম (0, 0, 0, মাস, দিন, বছর));

উদাহরণ স্বরূপ

echo date('N', mktime(0, 0, 0, 7, 1, 2017));   // will return 6
echo date('D', mktime(0, 0, 0, 7, 1, 2017));   // will return Sat
echo date('l', mktime(0, 0, 0, 7, 1, 2017));   // will return Saturday

0

আত্মিকভাবে এই সমস্ত বিশেষ পিএইচপি এক্সপ্রেশনগুলি first day of ...দুর্দান্ত, যদিও তারা আমার মাথা থেকে বার বার চলে যায়।

সুতরাং আমি সিদ্ধান্ত নিয়েছি যে বেশ কয়েকটি বেসিক ডেটটাইম বিমূর্ততা এবং নির্দিষ্ট বাস্তবায়ন টন যা কোনও আইডিই দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। বিষয়টি খুঁজে বের করতে হবে কী জিনিস তা । ভালো লেগেছে, today, now, the first day of a previous month, ইত্যাদি সেগুলো আমি তালিকাভুক্ত করেছি সব হয় datetimes। সুতরাং, একটি ইন্টারফেস বা বিমূর্ত শ্রেণি বলা হয় ISO8601DateTime, এবং নির্দিষ্ট তারিখের সময় যা এটি প্রয়োগ করে।

আপনার বিশেষ ক্ষেত্রে কোডটি দেখতে এমন দেখাচ্ছে:

(new TheFirstDayOfThisMonth(new Now()))->value();

এই পদ্ধতির সম্পর্কে আরও তথ্যের জন্য, এই এন্ট্রিটি একবার দেখুন

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