2014-12-02 10 views
11

मैं लार्वेल का उपयोग कर रहा हूं। मैं अभी Carbon पर आया हूं जो विक्रेता फ़ोल्डर में पहले से ही था। मैंने कुछ त्वरित खोज की और पाया कि यह PHP दिनांक समय से एक बड़ा विस्तार है।यह जानने के लिए कि क्या समय समय के दो बिंदुओं के नीचे आता है या

कहीं मेरे आवेदन में, मुझे एक तर्क की आवश्यकता है जो जांच करेगी कि दिया गया समय दो बिंदुओं के बीच आता है या नहीं। आइए कहें, मैं जांचना चाहता हूं कि 10:00 समय के समय 9:55 और 10:05 के नीचे आता है या नहीं। निश्चित रूप से, यह गिरता है लेकिन कार्बन की मदद से मैं उस तर्क का उपयोग कैसे करना चाहिए।

डिफ़ॉल्ट रूप से Carbon::now()2014-12-02 14:37:18 प्रारूप में दिनांक और समय लौटाएगा। मैं सोच रहा था कि क्या मैं केवल समय भाग निकाला जा सकता हूं i.e 14:37:18 तो मैं दो बार तुलना कर सकता हूं कि यह जानने के लिए कि परीक्षण के समय का समय दो बिंदुओं के नीचे आता है या नहीं।

यदि मैं सीधे दो कार्बन ऑब्जेक्ट्स की जांच करता हूं, तो यह वर्ष भी जांचने की कोशिश करेगा। लेकिन मुझे बस इतना ही समय का हिस्सा चाहिए।

और वास्तव में, मुझे यह भी यकीन नहीं है कि समय (एच: एम: एस) सीधे कार्बन के माध्यम से तुलना की जा सकती है या नहीं।

+0

स्वरूपण और तुलना के उदाहरण पाया [यहां] (https://github.com/briannesbitt/Carbon) –

उत्तर

1

इस प्रकार के कार्य के लिए यूनिक्स समय आसान है।

तो आप अपने हिप्स्टर प्रतिनिधित्व को गर्दन के प्रतिनिधित्व में बदलने और वास्तविक व्यक्ति की तुलना करने के लिए स्ट्रेटोटाइम का उपयोग कर सकते हैं। चूंकि आप केवल घंटों की तुलना करना चाहते हैं, इसलिए आप एक सापेक्ष समय का उपयोग कर इसे हैक कर सकते हैं।

<?php 
$now = time(); 
$startTime = strtotime("12:10:24", $now); 
$endTime = strtotime("14:24:45", $now); 
$point = strtotime("12:25:40", $now); 
if($point >= $startTime && $point <= $endTime) 
{ 
    echo "Inside\n"; 
} else { 
    echo "Outside\n"; 
} 
?> 

आउटपुट:

$ php test.php 2> /dev/null 
Inside 
+0

मैंने सोचा था कि वहाँ कार्बन के माध्यम से बहुत आसान तरीका होगा। मैं कार्बन की तरह कुछ उम्मीद कर रहा था: :(बिंदु) -> बीच (शुरू, अंत)। हाँ, बस इतना ही। अभी भी इंतजार कर रहा है कि ऐसा कोई रास्ता है या नहीं। लेकिन फिलहाल मैंने जो किया है, वही किया, 'असली आदमी की तरह' –

+0

हाहा, घमंडी पोस्ट के बारे में खेद है, इसका मतलब यह नहीं था :) मुझे कार्बन के बारे में पता नहीं है, और इसमें ऐसा हो सकता है सुविधा, अन्यथा, इसमें जोड़ने के लिए यह एक स्पष्ट विशेषता होगी। :) – DusteD

15

हाँ वहाँ कार्बन में ऐसा करने के लिए, के रूप में सिर्फ प्रलेखन here पर एक नज़र रखना एक तरीका है।

यह निर्धारित करने के लिए कि वर्तमान उदाहरण दो अन्य उदाहरणों के बीच है या नहीं, आप उचित रूप से() विधि के बीच नामित कर सकते हैं। तीसरा पैरामीटर इंगित करता है कि तुलनात्मक बराबर होना चाहिए या नहीं। डिफ़ॉल्ट सत्य है जो यह निर्धारित करता है कि सीमाओं के बीच या उसके बराबर है या नहीं।

$first = Carbon::create(2012, 9, 5, 1); 
$second = Carbon::create(2012, 9, 5, 5); 
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second));   // bool(true) 
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second));   // bool(true) 
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false)); // bool(false) 
+0

'बीच()' दूसरे 'var_dump (कार्बन :: निर्माण (2012, 9, 5, 5) -> के बीच ($, $, $) के बीच काम नहीं कर रहा है); // बूल (सत्य) 'चूंकि यह' झूठा 'देता है। क्या यह टाइमज़ोन के साथ करना है ??? – Pathros

+0

मैं कार्बन विशेषज्ञ नहीं हूं, परीक्षण करूँगा और वापस आऊंगा। – Kyslik

+3

धन्यवाद। मैंने पाया कि क्यों: मैंने 'अब()' फ़ंक्शन के लिए 'आज()' बदल दिया है। पूर्व मध्यरात्रि ('2016-05-13 00: 00: 00') पर तारीख लौटाता है, जबकि बाद में उस तारीख को वापस लौटाता है जब आप जानकारी देख रहे हैं (' 2016-05-13 08: 48: 36')। संदर्भ [यहां] (http://carbon.nesbot.com/docs/#api-comparison)। – Pathros

संबंधित मुद्दे