मुझे इस सप्ताह का सोमवार मिल सकता है:
$monday = date_create()->modify('this Monday');
मैं इस महीने की पहली तारीख को समान आसानी से प्राप्त करना चाहूंगा। मैं उसे कैसे प्राप्त कर सकता हूं?
मुझे इस सप्ताह का सोमवार मिल सकता है:
$monday = date_create()->modify('this Monday');
मैं इस महीने की पहली तारीख को समान आसानी से प्राप्त करना चाहूंगा। मैं उसे कैसे प्राप्त कर सकता हूं?
जवाबों:
काम करने के लिए PHP 5.3 की आवश्यकता है (PHP 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');
PHP 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
->modify()
यदि आपको अभी चालू माह का पहला दिन चाहिए तो आपको गुजरना नहीं है । आप 'first day of this month'
सीधे DateTime कंस्ट्रक्टर को पास कर सकते हैं जैसे $date = new DateTime('first day of this month')
:। बस कह रहा हूँ ...
यहाँ मैं क्या उपयोग है।
महीने का पहला दिन:
date('Y-m-01');
माह का अंतिम दिन:
date('Y-m-t');
date('Y-m-t');
।
date('w', '2015-05-01');
तो मैं वास्तविक दिन के बजाय पहले ही दिन समाप्त कर दूंगा। (यह मुझे सही 5 के बजाय 4 देगा)।
$monthStart = date('Y-m-01 00:00:00'); $monthEnd = date('Y-m-t 23:59:59');
यह वह सब कुछ है जो आपको चाहिए:
$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/>';
strtotime('first day of this month', time())
पहले दिन वापस आ जाएगा, और समय वर्तमान के समान है। तो वहाँ के लिए, इसका पहला दिन 0:00 बजे नहीं है, इसका पहला दिन है और अब समय है। यह इसे ठीक करता है strtotime('first day of this month 00:00:00', time())
।
वर्तमान में मैं इस समाधान का उपयोग कर रहा हूं:
$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');
मैं ऐसा करने के लिए एक पागल तरीके का उपयोग करता हूं इस कमांड का उपयोग कर रहा हूं
$firstDay=date('Y-m-d',strtotime("first day of this month"));
$lastDay=date('Y-m-d',strtotime("last day of this month"));
बस इतना ही
बदसूरत, (और अपने तरीके से ऊपर कॉल का उपयोग नहीं करता है) लेकिन काम करता है:
echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));
last day of {$month} {$year}
या last day of this month
दोनों काम करते हैं। लेकिन ध्यान रखें कि $ महीने को एक स्ट्रिंग होना होगा जिसमें "जनवरी" जैसे "जनवरी" के रूप में महीने का नाम होगा। या आप बस उपयोग कर सकते हैं date('Y-m-t');
।
मैं यह जांचने के लिए एक दैनिक क्रोन नौकरी के साथ उपयोग करता हूं कि क्या मुझे किसी भी महीने के पहले दिन अपने सहयोगियों को एक ईमेल भेजना चाहिए। यह अन्य उत्तरों की तुलना में कुछ अधिक है, लेकिन चट्टान के रूप में ठोस है।
//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;
}
तिथि पद्धति का उपयोग करते हुए, हमें परिणाम प्राप्त करने में सक्षम होना चाहिए। अर्थात; दिनांक ('एन / डी / एल', एमकेटाइम (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
उन सभी विशेष php भाव, first day of ...
महान हैं, हालांकि वे मेरे सिर से बार-बार निकलते हैं।
इसलिए मैंने कुछ बुनियादी डेटाइम अमूर्त और विशिष्ट कार्यान्वयन के टन का निर्माण करने का फैसला किया, जो किसी भी आईडीई द्वारा ऑटो-पूर्ण होते हैं। मुद्दा यह है कि चीजों को किस तरह का पाया जाए । की तरह, today
, now
, the first day of a previous month
, आदि उन चीजों मैं सूचीबद्ध किया है सब के सब कर रहे हैं datetimes। इसलिए, एक इंटरफ़ेस या अमूर्त वर्ग कहा जाता हैISO8601DateTime
, और विशिष्ट डेटाटाइम्स जो इसे लागू करते हैं।
आपके विशेष मामले का कोड इस तरह दिखता है:
(new TheFirstDayOfThisMonth(new Now()))->value();
इस दृष्टिकोण के बारे में अधिक जानकारी के लिए, इस प्रविष्टि पर एक नज़र डालें ।