पर्ल आपकी स्क्रिप्ट में वर्तमान दिनांक और समय खोजने के लिए एक आसान अंतर्निहित फ़ंक्शन है। हालाँकि, जब हम समय खोजने के बारे में बात करते हैं, तो हम उस समय के बारे में बात कर रहे हैं जो वर्तमान में स्क्रिप्ट चलाने वाली मशीन पर सेट है। उदाहरण के लिए, यदि आप अपनी पर्ल मशीन को अपनी स्थानीय मशीन पर चला रहे हैं, तो स्थानीय समय आपके द्वारा सेट किए गए वर्तमान समय को लौटा देगा, और संभवतः आपके वर्तमान समय क्षेत्र में सेट हो जाएगा।
जब आप एक वेब सर्वर पर एक ही स्क्रिप्ट चलाते हैं, तो आप पा सकते हैं कि स्थानीय समय आपके डेस्कटॉप सिस्टम पर स्थानीय समय से दूर है। सर्वर एक अलग समय क्षेत्र में हो सकता है या गलत तरीके से सेट किया जा सकता है। प्रत्येक मशीन का स्थानीय रूप से पूरी तरह से अलग विचार हो सकता है और यह कुछ समायोजन हो सकता है, या तो स्क्रिप्ट के भीतर या सर्वर पर ही, जो आप अपेक्षा कर रहे हैं, उससे मेल खाने के लिए।
स्थानीय समय फ़ंक्शन वर्तमान समय के बारे में डेटा से भरी एक सूची देता है, जिनमें से कुछ को समायोजित करने की आवश्यकता होगी। नीचे दिए गए कार्यक्रम को चलाएं और आप सूची में प्रत्येक तत्व को लाइन पर मुद्रित और रिक्त स्थान से अलग देखेंगे।
#! / Usr / स्थानीय / bin / perl
@ समयडता = स्थानीय समय (समय);
प्रिंट जॉइन ('', @ टाइमडेटा);
आपको इसके समान कुछ देखना चाहिए, हालाँकि संख्या बहुत भिन्न हो सकती है।
20 36 8 27 11 105 2 360 0
वर्तमान समय के ये तत्व क्रम में हैं:
- मिनट के बाद सेकंड
- मिनट पिछले
- आधी रात के बाद का समय
- महीने का दिन
- साल की शुरुआत के महीने
- 1900 से वर्षों की संख्या
- सप्ताह की शुरुआत (रविवार) से दिनों की संख्या
- वर्ष की शुरुआत के बाद से दिनों की संख्या
- की भी होगी या नहीं दिन के उजाले की बचत सक्रिय है
इसलिए यदि हम उदाहरण पर लौटते हैं और इसे पढ़ने का प्रयास करते हैं, तो आप देखेंगे कि 27 दिसंबर, 2005 को 8:36:20 पूर्वाह्न है, यह रविवार (मंगलवार) से 2 दिन पहले है, और यह शुरू होने के 360 दिन बाद है। साल। डेलाइट बचत समय सक्रिय नहीं है।
पर्ल लोकलटाइम रीडेबल बनाना
सरणी में कुछ तत्व जो स्थानीय समय के रिटर्न को पढ़ने के लिए थोड़ा अजीब हैं। 1900 के पिछले वर्षों की संख्या के संदर्भ में वर्तमान वर्ष के बारे में कौन सोचेगा? आइए एक उदाहरण देखें जो हमारी तारीख और समय को स्पष्ट करता है।
#! / Usr / स्थानीय / bin / perl
@ मंथ्स = क्यूव (जनवरी फरवरी मार्च अप्रैल जून जूल अगस्त सिपाही अक्टूबर नवंबर);
@weekDays = qw (Sun Mon Tue Wed Thu Fri Sat Sun);
($ सेकंड, $ मिनट, $ घंटा, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();
$ वर्ष = 1900 + $ yearOffset;
$ theTime = "$ घंटा: $ मिनट: $ दूसरा, $ सप्ताह का दिन [$ dayOfWeek] $ महीने [$ महीना] $ dayOfMonth, $ वर्ष";
$ $ समय प्रिंट;
जब आप प्रोग्राम चलाते हैं, तो आपको बहुत अधिक पढ़ने योग्य दिनांक और समय देखना चाहिए:
9:14:42, बुध 28 दिसंबर, 2005
तो इस अधिक पठनीय संस्करण को बनाने के लिए हमने क्या किया? पहले, हम सप्ताह के महीनों और दिनों के नाम के साथ दो सरणियों को तैयार करते हैं।
@ मंथ्स = क्यूव (जनवरी फरवरी मार्च अप्रैल जून जूल अगस्त सिपाही अक्टूबर नवंबर);
@weekDays = qw (Sun Mon Tue Wed Thu Fri Sat Sun);
चूंकि स्थानीय समय फ़ंक्शन इन तत्वों को क्रमशः 0-11 और 0-6 से मानों में लौटाता है, वे एक सरणी के लिए एकदम सही उम्मीदवार हैं। सरणी में सही तत्व तक पहुंचने के लिए स्थानीय समय द्वारा लौटाए गए मूल्य का उपयोग संख्यात्मक पते के रूप में किया जा सकता है।
$ महीने [$ महीने] $ सप्ताह के दिन [$ dayOfWeek]
अगला चरण स्थानीय फ़ंक्शन से सभी मान प्राप्त करना है। इस उदाहरण में, हम प्रत्येक तत्व को स्थानीय समय सरणी में स्वचालित रूप से अपने चर में रखने के लिए एक पर्ल शॉर्टकट का उपयोग कर रहे हैं। हमने नाम चुने हैं ताकि यह याद रखना आसान हो कि कौन सा तत्व कौन सा है।
($ सेकंड, $ मिनट, $ घंटा, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();
हमें वर्ष के मूल्य को समायोजित करने की भी आवश्यकता है। याद रखें कि स्थानीय समय 1900 के बाद की संख्या को लौटाता है, इसलिए वर्तमान वर्ष खोजने के लिए, हमें दिए गए मान में 1900 जोड़ना होगा।
$ वर्ष = 1900 + $ yearOffset;
कैसे पर्ल में वर्तमान जीएम समय बताने के लिए
मान लीजिए कि आप सभी संभावित समय क्षेत्र भ्रमों से बचना चाहते हैं और स्वयं को नियंत्रित करना चाहते हैं। स्थानीय समय में वर्तमान समय प्राप्त करना हमेशा एक मान लौटाएगा जो मशीन के टाइमज़ोन सेटिंग्स पर आधारित है - एक सर्वर अमेरिका एक बार वापस आ जाएगा, जबकि ऑस्ट्रेलिया में एक सर्वर समय क्षेत्र के कारण लगभग पूरे एक दिन अलग लौटेगा मतभेद।
पर्ल का एक दूसरा आसान समय बताने वाला कार्य है जो ठीक उसी तरह से काम करता है जैसे स्थानीय समय, लेकिन आपकी मशीन के लिए तय समय को वापस करने के बजाय समय क्षेत्र, यह लौटता है समन्वित वैशविक समय (संक्षिप्त रूप में UTC, जिसे ग्रीनविच मीन टाइम या GMT भी कहा जाता है)। बस पर्याप्त फ़ंक्शन को कहा जाता है gmtime।
#! / Usr / स्थानीय / bin / perl
@ टाइमडेट = जीएमटी (समय);
प्रिंट जॉइन ('', @ टाइमडेटा);
इस तथ्य के अलावा कि लौटाया गया समय हर मशीन पर और GMT में समान होगा, gmtime और स्थानीय समय के कार्यों में कोई अंतर नहीं है। सभी डेटा और रूपांतरण एक ही तरीके से किए जाते हैं।
#! / Usr / स्थानीय / bin / perl
@ मंथ्स = क्यूव (जनवरी फरवरी मार्च अप्रैल जून जूल अगस्त सिपाही अक्टूबर नवंबर);
@weekDays = qw (Sun Mon Tue Wed Thu Fri Sat Sun);
($ सेकंड, $ मिनट, $ घंटा, $ dayOfMonth, $ महीना, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();
$ वर्ष = 1900 + $ yearOffset;
$ theGMTime = "$ घंटे: $ मिनट: $ दूसरा, $ सप्ताह का दिन [$ dayOfWeek] $ महीने [$ महीना] $ dayOfMonth, $ वर्ष";
$ theGMTime प्रिंट करें;
- स्थानीय समय स्क्रिप्ट चलाने वाली मशीन पर वर्तमान स्थानीय समय लौटाएगा।
- gmtime यूनिवर्सल ग्रीनविच मीन टाइम, या GMT (या UTC) लौटाएगा।
- हो सकता है कि वापसी मान आपके द्वारा अपेक्षित नहीं हो, इसलिए सुनिश्चित करें कि आपने उन्हें आवश्यक रूप से परिवर्तित कर दिया है।