मैं जानना चाहता हूं कि क्या ऋतुओं की पहचान करने का कोई आसान तरीका है: वसंत, गर्मी, शरद ऋतु या सर्दी। मुझे एक 'रिज्यूमे' तैयार करना है और मैं चाहता हूं कि अगर काम करने की अवधि मोटे तौर पर एक मौसम में फिट बैठती है (बिल्कुल नहीं बल्कि उदाहरण के लिए +/- 10 दिनों की त्रुटि के साथ) यह वसंत, गर्मी, शरद ऋतु या सर्दी लौटाती है।
पसंद:
- इनपुट: 25/06/2010, 30/09/2010
- आउटपुट: समर 2010
(स्पेन में गर्मी 21 जुलाई से 20 सितंबर के बीच होती है)
- इनपुट: 02/02/2009, 30/04/2010
- आउटपुट: 2009-2010
कोई आईडिया कि इसे कैसे किया जाए?
3 जवाब
जैसा कि आप एक अवधि के लिए एक सीज़न की तलाश कर रहे हैं, मैंने जल्दी से इस फ़ंक्शन को लिखा है, इसमें सुधार किया जा सकता है और इसमें कुछ बग हो सकते हैं लेकिन आपके पास शुरू करने के लिए कहीं है।
function season($period)
{
$seasons = array(
'spring' => array('March 21' , 'June 20'),
'summer' => array('June 21' , 'September 22'),
'fall' => array('September 23' , 'December 20'),
'winter' => array('December 21' , 'March 20')
);
$seasonsYear = array();
$start = strtotime($period[0]);
$end = strtotime($period[1]);
$seasonsYear[date('Y', $start)] = array();
if (key(current($seasonsYear)) != date('Y', $end))
$seasonsYear[date('Y', $end)] = array();
foreach ($seasonsYear as $year => &$seasonYear)
foreach ($seasons as $season => $period)
$seasonYear[$season] = array(strtotime($period[0].' '.$year), strtotime($period[1].' '.($season != 'winter' ? $year : ($year+1))));
foreach ($seasonsYear as $year => &$seasons) {
foreach ($seasons as $season => &$period) {
if ($start >= $period[0] && $end <= $period[1])
return ucFirst($season).' '.$year;
if ($start >= $period[0] && $start <= $period[1]) {
if (date('Y', $end) != $year)
$seasons = $seasonsYear[date('Y', $end)];
$year = date('Y', $end);
$nextSeason = key($seasons);
$nextPeriod = current($seasons);
do {
$findNext = ($end >= $nextPeriod[0] && $end <= $nextPeriod[1]);
$nextSeason = key($seasons);
$nextPeriod = current($seasons);
} while ($findNext = False);
$diffCurr = $period[1]-$start;
$diffNext = $end-$nextPeriod[0];
if ($diffCurr > $diffNext)
return ucFirst($season).' '.$year;
else {
return ucFirst($nextSeason).' '.$year;
}
}
}
}
}
echo season(array('07/20/2010', '08/20/2010'));
echo "\n";
echo season(array('06/25/2010', '09/30/2010'));
echo "\n";
echo season(array('08/25/2010', '11/30/2010'));
echo "\n";
echo season(array('12/21/2010', '01/01/2011'));
echo "\n";
echo season(array('12/21/2010', '03/25/2011'));
नतीजा:
/*
Summer 2010
Summer 2010
Fall 2010
Winter 2010
Winter 2011
*/
और सिवाय इसके कि आप "सीज़न ईयर ओवरफ़्लो" के लिए चाहते हैं:
if (date('Y', $end) != $year)
return $year.'-'.date('Y', $end);
के बजाए:
if (date('Y', $end) != $year)
$seasons = $seasonsYear[date('Y', $end)];
$year = date('Y', $end);
नोट: सर्दी आ रही है।
ऐसा लगता है कि इस आदमी ने वह फ़ंक्शन पहले से ही लिखा हुआ है: http://biostall.com/get -वर्तमान-मौसम-उपयोग-php
यहां तक कि गोलार्द्ध का समर्थन भी है!
लेकिन यह चाल चलनी चाहिए:
<?php
function getSeason($date) {
$season_names = array('Winter', 'Spring', 'Summer', 'Fall');
if (strtotime($date) < strtotime($date_year.'-03-21') || strtotime($date) >= strtotime($date_year.'-12-21')) {
return $season_names[0]; // Must be in Winter
} elseif (strtotime($date) >= strtotime($date_year.'-09-23')) {
return $season_names[3]; // Must be in Fall
} elseif (strtotime($date) >= strtotime($date_year.'-06-21')) {
return $season_names[2]; // Must be in Summer
} elseif (strtotime($date) >= strtotime($date_year.'-03-21')) {
return $season_names[1]; // Must be in Spring
}
}
आपको क्या करने की आवश्यकता है इसका एक संक्षिप्त अवलोकन यहां दिया गया है:
काम करें जब आपकी सीज़न सीमाएँ होने वाली हों। यह एक बड़ा, बड़ा काम है अगर आप इसे अंतरराष्ट्रीय दायरे के लिए करने जा रहे हैं!
दिनांक सीमा के साथ प्रस्तुत किए जाने पर, पहले यह निर्धारित करें कि प्रत्येक सीज़न में उस सीमा के कितने दिन हैं।
आप आउटपुट चाहते हैं जैसे:
Range | Days | complete?
Su10 | 12 | 0
A10 | 90 | 1
W10 | 02 | 0
- एक बार यह हो जाने के बाद आपको यह पहचानने की आवश्यकता होगी कि क्या एक सीज़न 'पूर्ण' है, जो कि
1
होना चाहिए, यदि पूरे सीज़न में काम किया जाता है, तो 10 दिनों के भीतर। अगर है तो उस मौसम को चुनें। यदि अधिक पूर्ण हैं, या कोई नहीं, तोfalse
लौटाएं।
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।
01/01/2010
,01/01/2012
दर्ज की जाती हैं, तो व्यवहार कैसा होगा?