2011-04-19 10 views
5

मैं कुछ आंकड़े बना रहा हूं, मैं समय (केवल पिछले सप्ताह) और इस सप्ताह का चयन करना चाहता हूं।, इस सप्ताह (PHP)

इस सप्ताह अपनी आसान के लिए

:

$start = strtotime('this week'); 
$finish = time(); 

पिछले सप्ताह

$start = strtotime('last week'); 
$finish = ?????? 
+3

आपको पता करते हैं कि 'strtotime ('इस सप्ताह') 'वही मान देता है जैसे 'समय()'? –

उत्तर

11

यह?

$start = strtotime('2 weeks ago'); 
$finish = strtotime('last week'); 

संपादित करें: परिवर्तन @Dominic बार्न्स की टिप्पणी करने के लिए क्रेडिट।

+0

बेवकूफ मुझे: डी पिछले सप्ताह के लिए -1 सप्ताह का उपयोग करना भी संभव है? – TDSii

+0

@TDSii: क्या आपने इसे आजमाया है? – Jonah

+1

नोट: यह प्रश्न और उत्तर, मेल नहीं खाते। यदि प्रश्न सप्ताह के बारे में है, तो सप्ताह की शुरुआत सोमवार है और अंत रविवार है। निश्चित रूप से आप किस क्षेत्र में रहते हैं इसके आधार पर। हालांकि, स्ट्रेटोटाइम ('1 सप्ताह पहले') वास्तव में 7 दिनों के आधार पर काम करेगा। इस जवाब के लिए सवाल है, 7 दिनों पहले कैसे प्राप्त करें, सांख्यिकी कार्यक्रम के लिए नहीं, जो कि पिछले हफ्ते के आंकड़े दिखाए जाने वाला है !! डीबग कोड: 'इको डेट ("डीएमवाई", स्ट्रेटोटाइम ("1 सप्ताह पहले", स्ट्रेटोटाइम (' कल '));' –

2

के लिए कि तुम क्या चाहते है?

$start = strtotime('last week'); 
$finish = strtotime('this week'); 

Dominic भी बताते हैं कि time() === strtotime('this week') (CodePad)।

-1

आप देख रहे हैं के लिए पिछले 7 दिन

$start = strtotime('Last Week'); // Will give you last Monday 
$finish = strtotime('Last Sunday'); // Will give you last Sunday 
+0

आप समस्या को समझते हैं, लेकिन आपका समाधान 24h से कम, और सप्ताह या 7 दिनों तक कम नहीं है । तो इसकी: $ start = 'रविवार'; $ खत्म करने के लिए = 'सोमवार'; और वे उलट नहीं हैं वे हैं: 24.08.2015 - 23.08.2015 उदाहरण के लिए। –

5

सवाल सांख्यिकीय PHP स्क्रिप्ट के लिए है, तो के बजाय "पिछले सप्ताह"। फिर सभी उत्तरों और मूल रूप से सवाल गलत है।

  • आँकड़े = एक में पिछले हफ्ते वर्तमान में सप्ताह रविवार से सोमवार
  • इस हफ्ते को आँकड़े = सप्ताह वर्तमान में चलाने में रविवार से सोमवार
  • को

चलाने से पहले (या सोमवार से रविवार, इस कैलेंडर के आधार पर कि आप किस कैलेंडर का उपयोग करते हैं, लेकिन PHP में यह एक सप्ताह है)

इसका मतलब है, यह आज से 7 दिनों से कम नहीं है। यह अंतिम या इस सप्ताह नहीं है। तो वर्तमान में चयनित उत्तर सही है और 7 दिन पहले गिना जाता है। परीक्षण के समय, इसकी रविवार, माना जाता है, इसलिए यह सही दिखाता है।

// Selected answer: 
$start = strtotime('2 weeks ago'); 
$finish = strtotime('last week'); 

// But if today isn't Sunday, you can see the code is wrong: 
echo date("d.m.Y", strtotime("1 week ago", strtotime('yesterday'))); 
// Output: 15.08.2015 00:00:00 - 17.08.2015 00:00:00 

सप्ताह के शुरू और सप्ताह के अंत सेट करने के लिए: लेकिन संपादन अब दिनांक के आधार पर, आप समस्या देख सकते हैं। strtotime() अधिक सामान का समर्थन कर सकता है, इसलिए आप अधिकतर इस उत्तर को बेहतर और अधिक साफ कर सकते हैं।

$today = strtotime('today 00:00:00'); 

$this_week_start = strtotime('-1 week monday 00:00:00'); 
$this_week_end = strtotime('sunday 23:59:59'); 

$last_week_start = strtotime('-2 week monday 00:00:00'); 
$last_week_end = strtotime('-1 week sunday 23:59:59'); 

echo date('d.m.Y H:i:s', $today) . ' - Today for example purposes<br />'; 
echo date('d.m.Y H:i:s', $this_week_start) . ' - ' . date('d.m.Y H:i:s', $this_week_end) . ' - Currently running week period<br />'; 
echo date('d.m.Y H:i:s', $last_week_start) . ' - ' . date('d.m.Y H:i:s', $last_week_end) . ' - Last week period<br />'; 

से ऊपर वर्तमान में पैदा करता है:

30.08.2015 00:00 लेकिन अगर आप काम कर रहे कोड और से तर्क का एक अच्छा उदाहरण ...

मेरे प्रस्तावित समाधान मिलता है : 00 - आज उदाहरण के लिए
24.08.2015 00:00:00 - 30.08.2015 23:59:59 - वर्तमान में सप्ताह की अवधि चल रहा है
17.08.2015 00:00:00 - 23.08।2015 23:59:59 - पिछले सप्ताह की अवधि

आंकड़ों के लिए, यह सटीक होना चाहिए और यदि अंत 00:00:00 होगा, तो उस तारीख को गिना जाएगा। और यदि तिथि होगी एक दिन बाद 00:00:00 बजे, तो तिथि सही नहीं है। वहां, कम से कम सांख्यिकीय उद्देश्यों के लिए, यह समाधान ऐसा करने का सही तरीका है।

+0

अब सोमवार है, अब यह पिछले सप्ताह की शुरुआत में पिछले सप्ताह की शुरुआत में शुरू हो रहा है। – digout

1

, सांख्यिकीय प्रयोजनों के लिए पिछले सप्ताह के लिए खोज सोमवार से शुरू, रविवार को समाप्त होने वाले हैं: उदाहरण के लिए यदि

$last_week_start = strtotime("monday last week"); 
$last_week_end = strtotime("monday this week - 1 second"); 

"इस सप्ताह" महत्वपूर्ण है, अन्यथा, अगर यह सप्ताह सोमवार अतीत में पहले से ही है (यह पहले से ही मंगलवार है), यह आपको अगले सप्ताह के सोमवार को देगा।

महीने/साल के लिए के रूप में, मैं उत्तम दर्जे का mktime दृष्टिकोण का इस्तेमाल किया:

पिछले महीने

$last_month_start = mktime(0, 0, 0, date('m')-1, 01); 
$last_month_end = mktime(23, 59, 59, date('m'), 0); 

पिछले साल

$last_year_start = mktime(0, 0, 0, 1, 1, date('Y')-1); 
$last_year_end = mktime(23, 59, 59, 1, 0, date('Y')); 
संबंधित मुद्दे