1. परिचय
C भाषा प्रयोग गरेर प्रोग्राम विकास गर्दा, मिति‑समय जानकारीलाई ह्यान्डल गर्ने कुरा प्रायः हुन्छ। त्यसमा बारम्बार प्रयोग हुने हो, localtime
फङ्सन। यो फङ्सन टाइमजोनलाई विचार गरेर स्थानीय समय प्राप्त गर्न उपयोगी छ। तर, पहिलो पटक प्रयोग गर्ने व्यक्तिहरूका लागि यसको प्रयोग र ध्यान दिनुपर्ने बुँदाहरू बुझ्न गाह्रो हुन सक्छ।
यस लेखमा, localtime
फङ्सनको आधारभूत प्रयोगबाट लागू उदाहरण, ध्यान दिनुपर्ने बुँदासम्मलाई स्पष्ट रूपमा व्याख्या गर्नेछौं। शुरुआतीहरूले पनि बुझ्न सकून् भनेर, विशिष्ट उदाहरणहरू समेटेर व्याख्या गर्नेछौं, त्यसैले कृपया अन्त्यसम्म पढ्नुहोस्।
2. localtime
function भनेको के हो?
localtime
function को सारांश
localtime
function C भाषा मानक पुस्तकालयमा समावेश गरिएको समय सञ्चालनको लागि function हो। यो function POSIX वातावरण वा Windows वातावरण जस्ता विभिन्न वातावरणहरूमा व्यापक रूपमा प्रयोग गरिन्छ।localtime
time_t प्रकारको टाइमस्ट्याम्पलाई, टाइमजोनलाई विचार गरेर स्थानीय समय(struct tm
प्रकार)मा रूपान्तरण गर्छ।
time_t
प्रकार र struct tm
प्रकारको सम्बन्ध
C भाषा मा, समयलाई ह्यान्डल गर्दा दुई मुख्य प्रकारहरू प्रयोग गरिन्छ।
time_t
प्रकार:1970 जनवरी 1, 0:0:0(UTC)देखि बितेको सेकेन्डहरूलाई दर्शाउँछ।struct tm
प्रकार:समय जानकारीलाई विभाजन गरेर राख्ने संरचना हो, जसले वर्ष, महिना, दिन, घण्टा, मिनेट, सेकेन्ड आदि विवरणहरू समेट्छ।
localtime
function यी प्रकारहरूलाई रूपान्तरण गर्ने भूमिका निभाउँछ।
function प्रोटोटाइप
#include <time.h>
struct tm *localtime(const time_t *timer);
timer
मा पोइन्टरको रूपमा पास गरिएको time_t
प्रकारको मानलाई आधार बनाएर, स्थानीय समय फिर्ता गर्छ।
3. localtime
कार्यको आधारभूत प्रयोग
आधारभूत कोड उदाहरण
तलको उदाहरणले वर्तमान समय प्राप्त गरी त्यसलाई स्थानीय समयमा रूपान्तरण गर्ने सरल उदाहरण हो।
#include <time.h>
#include <stdio.h>
int main() {
time_t t = time(NULL); // वर्तमान समय प्राप्त गर्नुहोस्
struct tm *local = localtime(&t); // स्थानीय समयमा परिवर्तन गर्नुहोस्
printf("वर्तमान समय: %02d:%02d:%02dn",
local->tm_hour, local->tm_min, local->tm_sec);
return 0;
}
कोडको व्याख्या
time(NULL)
ले वर्तमान UNIX टाइमस्ट्याम्प प्राप्त गर्दछ।localtime
कार्यलाई प्रयोग गरेर,time_t
प्रकारको टाइमस्ट्याम्पलाईstruct tm
प्रकारको स्थानीय समयमा रूपान्तरण गर्दछ।struct tm
संरचनाको सदस्यहरू (tm_hour
,tm_min
,tm_sec
आदि) प्रयोग गरेर, समय जानकारीलाई व्यक्तिगत रूपमा प्राप्त गर्दछ।
निष्पादन परिणामको उदाहरण
प्रोग्राम चलाउँदा, तलको जस्तो परिणाम देखाइन्छ (चलाउने समयको अनुसार निर्भर गर्दछ):
वर्तमान समय: 14:30:15
मुख्य बुँदाहरू
localtime
कार्यको रिटर्न मान स्थिर रूपमा आवंटित संरचनाको पोइन्टर हो। अर्को भागमा उल्लेखित सावधानीहरूमा यसलाई पुन: प्रयोग गर्दा ध्यान दिनु आवश्यक छ।
4. अनुप्रयोग उदाहरण: स्वरूपित मिति र समयको प्रदर्शन
strftime
प्रयोग गरेर स्वरूप परिवर्तन
स्थानीय समयलाई केवल साधारण रूपमा देखाउने मात्र होइन, विशेष स्वरूपमा देखाउन चाहनुहुन्छ भने, strftime
फलन प्रयोग गर्नुहोस्।
तल मिति र समयलाई “YYYY-MM-DD HH:MM:SS” ढाँचामा देखाउने उदाहरण हो।
#include <time.h>
#include <stdio.h>
int main() {
time_t t = time(NULL);
struct tm *local = localtime(&t);
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local);
printf("स्वरूपित समय: %sn", buffer);
return 0;
}
परिणाम उदाहरण
स्वरूपित समय: 2024-11-1714:30:15
स्वरूप निर्दिष्टकर्ता सूची
%Y
: ग्रेगोरियन वर्ष (4 अंक)%m
: महिना (2 अंक)%d
: दिन (2 अंक)%H
: घण्टा (24‑घण्टा ढाँचा)%M
: मिनेट%S
: सेकेन्ड

5. ध्यान दिनुपर्ने बुँदा र उत्तम अभ्यासहरू
थ्रेड-सेफिटीको समस्या
localtime
फङ्क्शन थ्रेड-सेफ छैन। अर्थात, धेरै थ्रेडहरूमा एकै साथ प्रयोग गर्दा अनपेक्षित व्यवहार उत्पन्न हुन सक्छ। किनभने, localtime
फङ्क्शनको रिटर्न मानको रूपमा फर्काइने पोइन्टर स्थिर मेमोरी क्षेत्रमा इङ्गित गर्दछ, र प्रत्येक कलमा ओभरराइट हुन्छ।
समाधान: localtime_r
को प्रयोग
POSIX अनुरूप प्रणालीहरूमा, थ्रेड-सेफ localtime_r
फङ्क्शन प्रयोग गर्न सकिन्छ। यो फङ्क्शन स्थिर मेमोरीको सट्टा, कल गर्ने पक्षले सुरक्षित गरेको struct tm
स्ट्रक्चरलाई प्रयोग गर्दछ।
उदाहरण: localtime_r
को प्रयोग उदाहरण
#include <time.h>
#include <stdio.h>
int main() {
time_t t = time(NULL);
struct tm local;
if (localtime_r(&t, &local) != NULL) {
printf("हालको समय: %02d:%02d:%02dn",
local.tm_hour, local.tm_min, local.tm_sec);
} else {
perror("localtime_r error");
}
return 0;
}
Windows वातावरणमा localtime_s
Windows वातावरणमा, समान रूपमा थ्रेड-सेफ localtime_s
फङ्क्शन उपलब्ध गराइन्छ।
उदाहरण: localtime_s
को प्रयोग उदाहरण
#include <time.h>
#include <stdio.h>
int main() {
time_t t = time(NULL);
struct tm local;
if (localtime_s(&local, &t) == 0) {
printf("हालको समय: %02d:%02d:%02dn",
local.tm_hour, local.tm_min, local.tm_sec);
} else {
perror("localtime_s त्रुटि");
}
return 0;
}
मेमोरी व्यवस्थापनको ध्यान दिनुपर्ने बुँदा
localtime
फङ्क्शनको रिटर्न मान स्थिर मेमोरी क्षेत्रमा इङ्गित भएको कारण, प्रयोगकर्ताले प्रत्यक्ष रूपमा मुक्त गर्न आवश्यक छैन। तर, अर्को localtime
वा
6. FAQ खण्ड: सामान्य प्रश्नहरू र उत्तरहरू
Q1: localtime
फङ्क्शनको रिटर्न मान NULL
हुने कारण के हो?
A:
localtime
फङ्क्शनको रिटर्न मान NULL
हुने मुख्य कारणहरू तलका अनुसार छन्:
- पठाइएको
time_t
प्रकारको मान अवैध छ (उदाहरण: नकारात्मक मानहरू आदि)। - सिस्टमको मेमोरी अभावका कारण प्रक्रिया असफल हुन्छ।
समाधान:
time_t
को मान सही छ कि छैन जाँच गर्नुहोस्, वा त्रुटि ह्यान्डलिङ्ग लागू गर्नुहोस्।
if (localtime(&t) == NULL) {
perror("localtime failed");
}
Q2: gmtime
सँगको भिन्नता के हो?
A:
localtime
: टाइमजोनलाई विचार गरेर स्थानीय समय फिर्ता गर्छ।gmtime
: टाइमजोनलाई बेवास्ता गरी, UTC (समन्वित विश्व समय) मा आधारित समय फिर्ता गर्छ।
Q3: मल्टिथ्रेड वातावरणमा सुरक्षित रूपमा localtime
प्रयोग गर्न कसरी?
A:
मल्टिथ्रेड वातावरणमा, कृपया localtime_r
(POSIX) वा localtime_s
(Windows) प्रयोग गर्नुहोस्। यसले स्थिर मेमोरीको टकरावलाई टाल्न मद्दत गर्छ।
7. सम्बन्धित कार्यहरूको छोटो परिचय
gmtime
कार्य
gmtime
ले, localtime
सँग समान छ, तर टाइमजोनलाई विचार नगरी UTC को समय जानकारी फिर्ता गर्छ। तल प्रयोगको उदाहरणहरू छन्।
#include <time.h>
#include <stdio.h>
int main() {
time_t t = time(NULL);
struct tm *utc = gmtime(&t);
printf("UTC समय: %02d:%02d:%02dn",
utc->tm_hour, utc->tm_min, utc->tm_sec);
return 0;
}
mktime
कार्य
mktime
कार्यले, struct tm
प्रकारलाई फेरि time_t
प्रकारमा रूपान्तरण गर्छ। यसले स्थानीय समयबाट UNIX टाइमस्ट्याम्प प्राप्त गर्न सकिन्छ।
उदाहरण: mktime
को प्रयोग
#include <time.h>
#include <stdio.h>
int main() {
struct tm local = {0};
local.tm_year = 2024 - 1900; // 1900 वर्षदेखि बीतिएको वर्ष संख्या
local.tm_mon = 10; // महीना (0-11)
local.tm_mday = 17; // दिन
time_t t = mktime(&local);
if (t != -1) {
printf("UNIX टाइमस्ट्याम्प: %ldn", t);
} else {
perror("mktime failed");
}
return 0;
}
8. सारांश
यस लेखमा, C भाषा को localtime
कार्यको बारेमा, यसको आधारभूत प्रयोग, अनुप्रयोग उदाहरण, र ध्यान दिनुपर्ने बुँदाहरूलाई विस्तृत रूपमा व्याख्या गरिएको छ। तल लेखको मुख्य बुँदाहरू छन्।
localtime
कार्यको सारांश: स्थानीय समय प्राप्त गर्नको लागि उपयोगी कार्य।- ध्यान दिनुपर्ने बुँदा: थ्रेड-सेफ नहुनुका कारण,
localtime_r
रlocaltime_s
प्रयोग गर्न सिफारिस गरिन्छ। - अनुप्रयोग उदाहरण:
strftime
प्रयोग गरेर मिति-समय ढाँचा परिवर्तन। - FAQ: सामान्य समस्याहरूको कारण र समाधान।
यो लेखलाई सन्दर्भको रूपमा लिई, localtime
कार्यलाई सही रूपमा प्रयोग गरेर, C भाषामा मिति-समय संचालनलाई प्रभावकारी रूपमा गर्न सकिनेछ। कृपया, अन्य कार्यहरू (gmtime
र mktime
) पनि संयोजन गरेर प्रयोग गर्नुहोस्!