யூனிக்ஸ் டைம்ஸ்டாம்ப் மாற்றி
மாற்றிய தேதி & நேரம்
யூனிக்ஸ் டைம் ஸ்டாம்ப் மாற்றி
அறிமுகம்
யூனிக்ஸ் டைம் ஸ்டாம்ப் (POSIX நேரம் அல்லது எபேக் நேரம் என்றும் அழைக்கப்படுகிறது) என்பது ஒரு குறிப்பிட்ட நேரத்தை விவரிக்க ஒரு முறைமையாகும். இது 1970 ஜனவரி 1 (மாலை UTC/GMT) முதல் கடந்த காலத்தில் எவ்வளவு விநாடிகள் கடந்தன என்பதை குறிக்கிறது, இது லீப் விநாடிகளை எண்ணிக்கையில் சேர்க்காது. யூனிக்ஸ் டைம் ஸ்டாம்புகள் கணினி அமைப்புகள் மற்றும் நிரலாக்க மொழிகளில் பரவலாகப் பயன்படுத்தப்படுகின்றன, ஏனெனில் அவை ஒரு குறிப்பிட்ட நேரத்தை அடிப்படையிலான, மொழி சாராத பிரதிநிதித்துவத்தை வழங்குகின்றன.
இந்த மாற்றி, யூனிக்ஸ் டைம் ஸ்டாம்ப் ஒன்றை மனிதர்கள் படிக்கக்கூடிய தேதி மற்றும் நேரம் வடிவத்தில் மாற்ற அனுமதிக்கிறது. இது 12-மணி (AM/PM) மற்றும் 24-மணி நேர வடிவங்களை ஆதரிக்கிறது, இது மாறுபட்ட பிராந்திய மற்றும் தனிப்பட்ட விருப்பங்களை பூர்த்தி செய்யும்.
யூனிக்ஸ் டைம் ஸ்டாம்ப் எப்படி செயல்படுகிறது
யூனிக்ஸ் டைம் ஸ்டாம்புகள், யூனிக்ஸ் எபேக் (1970 ஜனவரி 1, 00:00:00 UTC) முதல் விநாடிகள் எண்ணிக்கையாகக் கணக்கிடப்படுகின்றன. இது, நேர வேறுபாடுகளை கணக்கிடுவதற்கும், திகதிகளை சுருக்கமான வடிவத்தில் சேமிக்கவும் மிகவும் பயனுள்ளதாக இருக்கிறது.
யூனிக்ஸ் டைம் ஸ்டாம்ப் ஒன்றை காலண்டர் தேதி ஆக மாற்றுவதற்கான கணித மாற்றம் பல படிகளை உள்ளடக்கியது:
- யூனிக்ஸ் எபேக் (1970 ஜனவரி 1, 00:00:00 UTC) உடன் தொடங்குங்கள்
- டைம் ஸ்டாம்பில் உள்ள விநாடிகளை சேருங்கள்
- லீப் ஆண்டுகள், மாறுபட்ட மாத நீளங்கள் மற்றும் பிற காலண்டர் சிக்கல்களை கணக்கில் எடுத்துக்கொள்ளுங்கள்
- தேவையானால் நேர மண்டல மாற்றங்களை செயல்படுத்துங்கள்
உதாரணமாக, யூனிக்ஸ் டைம் ஸ்டாம்ப் 1609459200
என்பது வெள்ளி, 2021 ஜனவரி 1, 00:00:00 UTC ஐ குறிக்கிறது.
மாற்றம் செய்யும் சூத்திரம்:
பல நிரலாக்க மொழிகள் மற்றும் இயக்க முறைமைகள் இந்த மாற்றத்தை கையாளுவதற்கான உள்ளமைவுகளை வழங்குகின்றன, இது சிக்கலான காலண்டர் கணக்கீடுகளை மறைக்கிறது.
நேர வடிவ விருப்பங்கள்
இந்த மாற்றி இரண்டு நேர வடிவ விருப்பங்களை வழங்குகிறது:
-
24-மணி வடிவம் (சில நேரங்களில் "மிலிடரி நேரம்" என்றும் அழைக்கப்படுகிறது): மணிகள் 0 முதல் 23 வரை மாறுபடுகின்றன, மற்றும் AM/PM குறியீடு இல்லை. உதாரணமாக, 3:00 PM 15:00 ஆகக் குறிக்கப்படுகிறது.
-
12-மணி வடிவம்: மணிகள் 1 முதல் 12 வரை மாறுபடுகின்றன, AM (அந்த மிடியமுக்கு முன்) மாலை 12 மணி முதல் மாலை 12 மணி வரை, மற்றும் PM (அந்த மிடியமுக்கு பிறகு) மாலை 12 மணி முதல் மாலை 12 மணி வரை. உதாரணமாக, 24-மணி வடிவத்தில் 15:00 என்பது 3:00 PM ஆகக் குறிக்கப்படுகிறது.
இந்த வடிவங்களில் தேர்வு செய்வது பெரும்பாலும் பிராந்திய மரபு மற்றும் தனிப்பட்ட விருப்பத்தின் அடிப்படையில்:
- 24-மணி வடிவம் பெரும்பாலும் ஐரோப்பா, லத்தீன் அமெரிக்கா மற்றும் ஆசியாவின் பெரும்பாலான பகுதிகளில், உலகளாவிய அறிவியல், இராணுவ மற்றும் மருத்துவ சூழல்களில் பயன்படுத்தப்படுகிறது.
- 12-மணி வடிவம் அமெரிக்கா, கனடா, ஆஸ்திரேலியா மற்றும் சில பிற ஆங்கில பேசும் நாடுகளில் தினசரி பயன்பாட்டிற்காக பரவலாக உள்ளது.
எட்ஜ் கேஸ்கள் மற்றும் வரம்புகள்
யூனிக்ஸ் டைம் ஸ்டாம்ப் கையாளும் போது, பல எட்ஜ் கேஸ்கள் மற்றும் வரம்புகளைப் பற்றிய விழிப்புணர்வு முக்கியமாக இருக்கிறது:
-
எதிர்மறை டைம் ஸ்டாம்ப்: இவை யூனிக்ஸ் எபேக்குக்கு (1970 ஜனவரி 1) முன்னால் உள்ள தேதிகளை குறிக்கின்றன. கணித ரீதியாக சரியானதாக இருந்தாலும், சில அமைப்புகள் எதிர்மறை டைம் ஸ்டாம்ப்களை சரியாகக் கையாளmay.
-
2038 பிரச்சினை: யூனிக்ஸ் டைம் ஸ்டாம்ப்கள் பெரும்பாலும் 32-பிட் கையெழுத்தான முழு எண்களாகக் கையாளப்படுகின்றன, இது 2038 ஜனவரி 19 அன்று ஓவர்ஃப்ளோ ஆகும். இந்த நேரத்திற்குப் பிறகு, 32-பிட் அமைப்புகள் நேரங்களை சரியாகக் பிரதிநிதித்துவிக்க முடியாது, மாறுபட்ட பெரிய முழு எண் வகையைப் பயன்படுத்தாமல்.
-
மிகவும் பெரிய டைம் ஸ்டாம்ப்கள்: மிகவும் தொலைவிலுள்ள எதிர்கால தேதிகள் சில அமைப்புகளில் பிரதிநிதித்துவிக்க முடியாது, அல்லது மாறுபட்ட முறையில் கையாளப்படலாம்.
-
லீப் விநாடிகள்: யூனிக்ஸ் நேரம் லீப் விநாடிகளை கணக்கில் எடுத்துக்கொள்ளாது, இது UTC-க்கு நேர்மறையான நேரத்தைச் சரிசெய்யும் போது மாறுபட்டதாக இருக்கிறது. இதனால் யூனிக்ஸ் நேரம் விண்மீன் நேரத்துடன் சரியாக ஒத்திசைக்கப்படவில்லை.
-
நேர மண்டலக் கருத்துக்கள்: யூனிக்ஸ் டைம் ஸ்டாம்ப்கள் UTC இல் உள்ள தருணங்களை பிரதிநிதித்துவிக்கின்றன. உள்ளூர் நேரத்திற்கு மாற்றுவதற்கு கூடுதல் நேர மண்டல தகவல் தேவைப்படுகிறது.
-
நாள் மாறுபாடு நேரம்: டைம் ஸ்டாம்ப்களை உள்ளூர் நேரத்திற்கு மாற்றும் போது, நாள் மாறுபாடு நேரம் மாற்றங்களைப் பற்றிய சிக்கல்களைப் பூர்த்தி செய்ய வேண்டும்.
பயன்பாட்டு வழிகள்
யூனிக்ஸ் டைம் ஸ்டாம்ப்கள் கணினி மற்றும் தரவுகள் மேலாண்மையில் பல பயன்பாடுகளில் பயன்படுத்தப்படுகின்றன:
-
தரவுத்தொகுப்புகள்: டைம் ஸ்டாம்ப்கள் பதிவுகள் எப்போது உருவாக்கப்பட்டன அல்லது மாற்றப்பட்டன என்பதை பதிவு செய்ய பொதுவாகப் பயன்படுத்தப்படுகின்றன.
-
வலை வளர்ச்சி: HTTP தலைப்புகள், குக்கீகள் மற்றும் காசோலை முறைமைகள் பொதுவாக யூனிக்ஸ் டைம் ஸ்டாம்ப்களைப் பயன்படுத்துகின்றன.
-
லாக் கோப்புகள்: கணினி லாக்கள் பொதுவாக நிகழ்வுகளை சரியான வரிசையில் பதிவு செய்ய யூனிக்ஸ் டைம் ஸ்டாம்ப்களைப் பதிவு செய்கின்றன.
-
பதிவு கட்டுப்பாட்டு அமைப்புகள்: Git மற்றும் பிற VCS கள் மாற்றங்கள் எப்போது செய்யப்பட்டன என்பதை பதிவு செய்ய டைம் ஸ்டாம்ப்களைப் பயன்படுத்துகின்றன.
-
API பதில்கள்: பல வலை API கள் தரவுகள் எப்போது உருவாக்கப்பட்டன அல்லது வளங்கள் எப்போது கடைசி முறை மாற்றப்பட்டன என்பதை குறிக்க டைம் ஸ்டாம்ப்களை உள்ளடக்கியுள்ளன.
-
கோப்பு அமைப்புகள்: கோப்புகள் உருவாக்கும் மற்றும் மாற்றும் நேரங்கள் பொதுவாக யூனிக்ஸ் டைம் ஸ்டாம்ப்களைப் பயன்படுத்தி பதிவு செய்யப்படுகின்றன.
-
அதிகார மேலாண்மை: வலை பயன்பாடுகள் பயனர் அமர்வுகள் எப்போது காலாவதியாகும் என்பதை தீர்மானிக்க டைம் ஸ்டாம்ப்களைப் பயன்படுத்துகின்றன.
-
தரவுத்தொகுப்புகள்: டைம் ஸ்டாம்ப்கள் பகுப்பாய்வு பயன்பாடுகளில் கால அட்டவணை தரவுகளைப் வேலை செய்வதற்கான ஒரு தரநிலைப்படுத்தப்பட்ட முறையை வழங்குகின்றன.
மாற்று முறைகள்
யூனிக்ஸ் டைம் ஸ்டாம்ப்கள் பரவலாகப் பயன்படுத்தப்படுவதற்குப் பின்வரும் சில சூழல்களில், சில மாற்று நேர பிரதிநிதித்துவ வடிவங்கள் அதிகரிக்கக்கூடியதாக இருக்கலாம்:
-
ISO 8601: ஒரு தரநிலைப்படுத்தப்பட்ட உரை வடிவம் (உதாரணமாக, "2021-01-01T00:00:00Z") இது மனிதர்களால் படிக்கக்கூடியதாகவும், வரிசைப்படுத்துவதற்கானது. இது தரவுகள் பரிமாற்றம் மற்றும் பயனர் எதிர்கால பயன்பாட்டிற்காக அதிகமாக விரும்பப்படுகிறது.
-
RFC 3339: இணைய நெறிமுறைகளில் பயன்படுத்தப்படும் ISO 8601 இன் ஒரு சுருக்கமான வடிவம், கடுமையான வடிவமைப்பு தேவைகளுடன்.
-
மனிதர்களால் படிக்கக்கூடிய வடிவங்கள்: உள்ளூர் தேதித் திருத்தங்கள் (உதாரணமாக, "ஜனவரி 1, 2021") நேரடியாக பயனர் தொடர்புக்கு அதிகரிக்கக்கூடியதாக இருக்கின்றன, ஆனால் கணக்கீட்டுக்கு குறைவாகவே இருக்கின்றன.
-
மைக்ரோசாஃப்ட் FILETIME: 1601 ஜனவரி 1 முதல் 100-நானோசெக்கண்டுகளின் எண்ணிக்கையை பிரதிநிதித்துவிக்கக் கூடிய 64-பிட் மதிப்பு, விண்டோஸ் அமைப்புகளில் பயன்படுத்தப்படுகிறது.
-
ஜூலியன் நாள் எண்: விண்மீன் மற்றும் சில அறிவியல் பயன்பாடுகளில் பயன்படுத்தப்படுகிறது, 4713 BCE ஜனவரி 1 முதல் நாட்களை எண்ணுகிறது.
நேர வடிவத்தைத் தேர்ந்தெடுப்பது பல காரணிகளின் அடிப்படையில் இருக்கும்:
- தேவைப்படும் துல்லியம்
- மனிதர் படிக்கக்கூடிய தேவைகள்
- சேமிப்பு கட்டுப்பாடுகள்
- ஏற்கனவே உள்ள அமைப்புகளுடன் ஒத்திசைவு
- பிரதிநிதித்துவிக்க வேண்டிய தேதிகளின் வரம்பு
வரலாறு
யூனிக்ஸ் நேரத்தின் கருத்து, 1960-70 களில் பெல் லாப்ஸ் இல் யூனிக்ஸ் இயக்க அமைப்பின் மேம்பாட்டுடன் தோன்றியது. எபேக் ஆக 1970 ஜனவரி 1 ஐப் பயன்படுத்துவதற்கான தீர்மானம், சிலwhat சீரற்றமாக இருந்தாலும், ஆனால் அந்த நேரத்தில் நடைமுறைமையாக இருந்தது - இது ஆர்வமுள்ள தேதிகளுக்காக சேமிப்பு தேவைகளை குறைக்கவும், ஆனால் வரலாற்று தரவுகளுக்காக பயனுள்ளதாகவும் இருந்தது.
முதன்மை செயல்பாட்டில் 32-பிட் கையெழுத்தான முழு எண்களைப் பயன்படுத்தி விநாடிகள் எண்ணிக்கையை சேமிக்க முடிவு செய்யப்பட்டது, இது அந்த நேரத்தில் யூனிக்ஸ் அமைப்புகளின் எதிர்பார்க்கப்படும் ஆயுளுக்கானது. ஆனால், இந்த முடிவு 2038 பிரச்சினைக்கு (சில நேரங்களில் "Y2K38" அல்லது "யூனிக்ஸ் மில்லேனியம் பக்") வழிவகுக்கிறது, ஏனெனில் 32-பிட் கையெழுத்தான முழு எண்கள் 1970-01-01 அன்று 03:14:07 UTC வரை உள்ள தேதிகளை மட்டுமே பிரதிநிதித்துவிக்க முடியும்.
யூனிக்ஸ் மற்றும் யூனிக்ஸ் போன்ற இயக்க அமைப்புகள் பிரபலமாக மாறின, யூனிக்ஸ் டைம் ஸ்டாம்ப் கணினி நேரத்தை பிரதிநிதித்துவிக்க ஒரு நடைமுறைமையான தரநிலையாக மாறியது. இது பல நிரலாக்க மொழிகள், தரவுத்தொகுப்புகள் மற்றும் பயன்பாடுகளில் ஏற்கனவே உள்ள அமைப்புகளால் ஏற்கனவே ஏற்றுக்கொள்ளப்பட்டது.
நவீன அமைப்புகள் அதிகமாக 64-பிட் முழு எண்களை டைம் ஸ்டாம்ப்களாகப் பயன்படுத்துவதற்காக, எபேக்கிலிருந்து 292 பில்லியன் ஆண்டுகள் இரண்டு திசைகளிலும் பிரதிநிதித்துவிக்க முடியும், இது 2038 பிரச்சினையை எளிதாக்குகிறது. இருப்பினும், பழைய அமைப்புகள் மற்றும் பயன்பாடுகள் இன்னும் பாதிக்கப்படலாம்.
யூனிக்ஸ் டைம் ஸ்டாம்பின் எளிமை மற்றும் பயன், மேலும் மேம்பட்ட நேர பிரதிநிதித்துவ வடிவங்கள் உருவாகியுள்ள போதிலும், அதன் தொடர்ச்சியான தொடர்பை உறுதிப்படுத்தியுள்ளது. இது கணினி உலகில் ஒரு அடிப்படையான கருத்தாகவே உள்ளது, எங்கள் டிஜிட்டல் கட்டமைப்பின் அடிப்படையாக உள்ளது.
குறியீட்டு எடுத்துக்காட்டுகள்
இங்கே பல நிரலாக்க மொழிகளில் யூனிக்ஸ் டைம் ஸ்டாம்ப்களை மனிதர்களால் படிக்கக்கூடிய தேதிகளாக மாற்றுவதற்கான எடுத்துக்காட்டுகள் உள்ளன:
// ஜாவாஸ்கிரிப்ட் டைம் ஸ்டாம்ப் மாற்றம்
function convertUnixTimestamp(timestamp, use12Hour = false) {
// புதிய தேதி பொருளை உருவாக்குங்கள் (ஜாவாஸ்கிரிப்ட் மில்லி விநாடிகள் பயன்படுத்துகிறது)
const date = new Date(timestamp * 1000);
// வடிவமைப்பு விருப்பங்கள்
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: use12Hour ? 'numeric' : '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: use12Hour
};
// உள்ளூர் வடிவமைப்பைப் பயன்படுத்தி string ஆக மாற்றுங்கள்
return date.toLocaleString(undefined, options);
}
// எடுத்துக்காட்டு பயன்பாடு
const timestamp = 1609459200; // 2021 ஜனவரி 1, 00:00:00 UTC
console.log(convertUnixTimestamp(timestamp, false)); // 24-மணி வடிவம்
console.log(convertUnixTimestamp(timestamp, true)); // 12-மணி வடிவம்
எட்ஜ் கேஸ்களை கையாளுதல்
யூனிக்ஸ் டைம் ஸ்டாம்ப் கையாளும் போது, எட்ஜ் கேஸ்களை சரியாகக் கையாள்வது முக்கியமாக இருக்கிறது. சில பொதுவான எட்ஜ் கேஸ்களை கையாள்வதற்கான எடுத்துக்காட்டுகள் இங்கே உள்ளன:
// ஜாவாஸ்கிரிப்ட் எட்ஜ் கேஸ் கையாளுதல்
function safeConvertTimestamp(timestamp, use12Hour = false) {
// டைம் ஸ்டாம்ப் செல்லுபடியாக உள்ளதா என்பதைச் சரிபார்க்கவும்
if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
return "செல்லுபடியாகாத டைம் ஸ்டாம்ப்";
}
// எதிர்மறை டைம் ஸ்டாம்ப்களைச் சரிபார்க்கவும் (1970 க்கு முன் உள்ள தேதிகள்)
if (timestamp < 0) {
// சில உலாவிகள் எதிர்மறை டைம் ஸ்டாம்ப்களை சரியாகக் கையாளmay.
// 1970 க்கு முன்னால் உள்ள தேதிகளுக்கு மேலும் உறுதியான அணுகுமுறை பயன்படுத்தவும்
const date = new Date(timestamp * 1000);
if (isNaN(date.getTime())) {
return "செல்லுபடியாகாத தேதி (1970 க்குப் பிறகு)";
}
}
// Y2K38 பிரச்சினையைச் சரிபார்க்கவும் (32-பிட் அமைப்புகளுக்காக)
const maxInt32 = 2147483647; // 32-பிட் கையெழுத்தான முழு எண்களின் அதிகபட்ச மதிப்பு
if (timestamp > maxInt32) {
// நவீன ஜாவாஸ்கிரிப்டில் மிகப்பெரிய டைம் ஸ்டாம்ப்களுக்கு BigInt ஐப் பயன்படுத்த பரிந்துரைக்கவும்
console.warn("டைம் ஸ்டாம்ப் 32-பிட் முழு எண் வரம்பை மீறுகிறது (Y2K38 பிரச்சனை)");
}
// சாதாரண மாற்றத்துடன் தொடருங்கள்
try {
const date = new Date(timestamp * 1000);
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: use12Hour ? 'numeric' : '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: use12Hour
};
return date.toLocaleString(undefined, options);
} catch (error) {
return "டைம் ஸ்டாம்ப் மாற்றுவதில் பிழை: " + error.message;
}
}
மேற்கோள்கள்
-
"யூனிக்ஸ் நேரம்." விக்கிப்பீடியா, விக்கிமீடியா அறக்கட்டளை, https://en.wikipedia.org/wiki/Unix_time
-
"2038 பிரச்சினை." விக்கிப்பீடியா, விக்கிமீடியா அறக்கட்டளை, https://en.wikipedia.org/wiki/Year_2038_problem
-
ஒல்சன், ஆர்தர் டேவிட். "காலண்டரியல் நேரத்தின் சிக்கல்கள்." திறந்த குழு, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf
-
"ISO 8601." விக்கிப்பீடியா, விக்கிமீடியா அறக்கட்டளை, https://en.wikipedia.org/wiki/ISO_8601
-
"RFC 3339: இணையத்தில் தேதிகள் மற்றும் நேரம்: டைம் ஸ்டாம்ப்கள்." இணைய பொறியியல் பணியகம் (IETF), https://tools.ietf.org/html/rfc3339
-
கெர்னிகன், ப்ரயான் W., மற்றும் டெனிஸ் எம். ரிச்சி. "C நிரலாக்க மொழி." பிரென்டிஸ் ஹால், 1988.