Php में चालू माह का पहला दिन DateTime ऑब्जेक्ट के रूप में date_modify का उपयोग करते हुए


157

मुझे इस सप्ताह का सोमवार मिल सकता है:

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

मैं इस महीने की पहली तारीख को समान आसानी से प्राप्त करना चाहूंगा। मैं उसे कैसे प्राप्त कर सकता हूं?


उह, मैं एक परेशानी में हूं, जॉन कोंडे ने मेरे द्वारा पूछे गए सवाल का जवाब दिया, लेकिन मैं यह उल्लेख करना भूल गया कि इसे 5.2 पर काम करने की आवश्यकता है, इसलिए मैं वास्तव में श्री-एसके के उत्तर का उपयोग
करूंगा

जवाबों:


260

काम करने के लिए 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

9
ध्यान दें कि ->modify()यदि आपको अभी चालू माह का पहला दिन चाहिए तो आपको गुजरना नहीं है । आप 'first day of this month'सीधे DateTime कंस्ट्रक्टर को पास कर सकते हैं जैसे $date = new DateTime('first day of this month'):। बस कह रहा हूँ ...
Dzhuneyt

334

यहाँ मैं क्या उपयोग है।

महीने का पहला दिन:

date('Y-m-01');

माह का अंतिम दिन:

date('Y-m-t');

10
यह अब तक का सबसे सरल और सबसे पठनीय तरीका IMO है, यदि आपको इसकी आवश्यकता है तो तारीख का एक स्ट्रिंग प्रतिनिधित्व है।
मार्कस अमलाथिया मैग्नसॉन

5
महीने के अंतिम दिन का उपयोग करके पकड़ा जा सकता है date('Y-m-t');
मार्क टोमलिन

7
FYI करें: तारीख में 't' ('Ym-t') हमेशा उसी महीने में कितने दिनों का प्रतिनिधित्व करता है। चालू माह का अंतिम दिन प्राप्त करने का एक शानदार और सरल तरीका।
पास्कल क्लेन

1
यदि मैं सप्ताह के दिन को प्राप्त करने की कोशिश करने के लिए इसका उपयोग करता हूं date('w', '2015-05-01');तो मैं वास्तविक दिन के बजाय पहले ही दिन समाप्त कर दूंगा। (यह मुझे सही 5 के बजाय 4 देगा)।
PBwebD

5
यह केवल शानदार है। मैंने इस पर महीने में समय के लिए न्यूनतम और अधिकतम सीमाएँ देने के लिए थोड़ा विस्तार किया: $monthStart = date('Y-m-01 00:00:00'); $monthEnd = date('Y-m-t 23:59:59');
H2ONOCK

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 अगस्त मिलेगा! मुझे वास्तव में यह जांचने की आवश्यकता है कि क्या यह आज "1" है और यदि "अब" का उपयोग करें। अजीब (Php 7.3.9)
जैकब क्रिस्टेंसन

@JacobChristensen ने अभी तक ऐसा अनुभव नहीं किया है। आपने इसे कैसे तय किया?
निकोला पेटकंस्की

बहुत सही, php सीम इस पहले और आखिरी के बारे में बहुत अच्छा नहीं है। $ n = new \ DateTime ('पहले दिन का।' (new \ DateTime ()) -> प्रारूप ('F')); "जनवरी का पहला दिन"। सप्ताह के लिए ऐसा ही होता है जब यह सोमवार होता है और यह थोड़ा सा होता है ... निराशाजनक :)
जैकब क्रिस्टेंसेन


6

5.2 php में आप उपयोग कर सकते हैं:

<? $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दोनों काम करते हैं। लेकिन ध्यान रखें कि $ महीने को एक स्ट्रिंग होना होगा जिसमें "जनवरी" जैसे "जनवरी" के रूप में महीने का नाम होगा। या आप बस उपयोग कर सकते हैं 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

उन सभी विशेष php भाव, first day of ...महान हैं, हालांकि वे मेरे सिर से बार-बार निकलते हैं।

इसलिए मैंने कुछ बुनियादी डेटाइम अमूर्त और विशिष्ट कार्यान्वयन के टन का निर्माण करने का फैसला किया, जो किसी भी आईडीई द्वारा ऑटो-पूर्ण होते हैं। मुद्दा यह है कि चीजों को किस तरह का पाया जाए । की तरह, today, now, the first day of a previous month, आदि उन चीजों मैं सूचीबद्ध किया है सब के सब कर रहे हैं datetimes। इसलिए, एक इंटरफ़ेस या अमूर्त वर्ग कहा जाता हैISO8601DateTime , और विशिष्ट डेटाटाइम्स जो इसे लागू करते हैं।

आपके विशेष मामले का कोड इस तरह दिखता है:

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

इस दृष्टिकोण के बारे में अधिक जानकारी के लिए, इस प्रविष्टि पर एक नज़र डालें ।

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