ইউনিক্স টাইমস্ট্যাম্প কনভার্টার
রূপান্তরিত তারিখ ও সময়
ইউনিক্স টাইমস্ট্যাম্প কনভার্টার
পরিচিতি
একটি ইউনিক্স টাইমস্ট্যাম্প (যাকে POSIX সময় বা Epoch সময়ও বলা হয়) একটি সময়ের পয়েন্ট বর্ণনা করার জন্য একটি সিস্টেম। এটি 1970 সালের 1 জানুয়ারি (মধ্যরাত UTC/GMT) থেকে যে সেকেন্ডগুলি অতিবাহিত হয়েছে তার সংখ্যা, লিপ বছরগুলি গোনার বাইরে। ইউনিক্স টাইমস্ট্যাম্পগুলি কম্পিউটার সিস্টেম এবং প্রোগ্রামিং ভাষায় ব্যাপকভাবে ব্যবহৃত হয় কারণ এগুলি একটি নির্দিষ্ট সময়ের মুহূর্তের জন্য একটি সংক্ষিপ্ত, ভাষা-নিরপেক্ষ উপস্থাপন প্রদান করে।
এই কনভার্টার আপনাকে একটি ইউনিক্স টাইমস্ট্যাম্পকে মানব-পঠনযোগ্য তারিখ এবং সময়ের ফরম্যাটে রূপান্তর করতে দেয়। এটি 12-ঘণ্টার (এএম/পিএম) এবং 24-ঘণ্টার সময়ের উভয় ফরম্যাট সমর্থন করে যাতে বিভিন্ন আঞ্চলিক এবং ব্যক্তিগত পছন্দগুলি পূরণ হয়।
ইউনিক্স টাইমস্ট্যাম্প কিভাবে কাজ করে
ইউনিক্স টাইমস্ট্যাম্পগুলি ইউনিক্স এপোক (1970 সালের 1 জানুয়ারি, 00:00:00 UTC) থেকে সেকেন্ডের সংখ্যা হিসাবে গণনা করা হয়। এটি সময়ের পার্থক্য গণনা করার জন্য এবং একটি সংক্ষিপ্ত ফরম্যাটে তারিখ সংরক্ষণের জন্য বিশেষভাবে উপকারী।
একটি ইউনিক্স টাইমস্ট্যাম্প থেকে ক্যালেন্ডার তারিখে রূপান্তরের গাণিতিক প্রক্রিয়া কয়েকটি ধাপ জড়িত:
- ইউনিক্স এপোক (1970 সালের 1 জানুয়ারি, 00:00:00 UTC) দিয়ে শুরু করুন
- টাইমস্ট্যাম্পে সেকেন্ডের সংখ্যা যোগ করুন
- লিপ বছর, পরিবর্তনশীল মাসের দৈর্ঘ্য এবং অন্যান্য ক্যালেন্ডার জটিলতাগুলি বিবেচনা করুন
- প্রয়োজনে সময় অঞ্চল সামঞ্জস্য প্রয়োগ করুন
যেমন, ইউনিক্স টাইমস্ট্যাম্প 1609459200
শুক্রবার, 1 জানুয়ারি, 2021, 00:00:00 UTC কে উপস্থাপন করে।
রূপান্তরের সূত্রটি নিম্নরূপ প্রকাশ করা যেতে পারে:
বেশিরভাগ প্রোগ্রামিং ভাষা এবং অপারেটিং সিস্টেমগুলি এই রূপান্তর পরিচালনা করার জন্য বিল্ট-ইন ফাংশন সরবরাহ করে, জটিল ক্যালেন্ডার গণনাগুলি থেকে দূরে সরিয়ে।
সময়ের ফরম্যাটের বিকল্পগুলি
এই কনভার্টার দুটি সময় ফরম্যাটের বিকল্প সরবরাহ করে:
-
24-ঘণ্টার ফরম্যাট (যাকে কখনও কখনও "মিলিটারি টাইম" বলা হয়): ঘণ্টা 0 থেকে 23 এর মধ্যে, এবং এএম/পিএমের কোন চিহ্ন নেই। উদাহরণস্বরূপ, 3:00 PM কে 15:00 হিসাবে উপস্থাপন করা হয়।
-
12-ঘণ্টার ফরম্যাট: ঘণ্টা 1 থেকে 12 এর মধ্যে, মধ্যরাত থেকে দুপুরের জন্য এএম (অ্যান্টে মেরিডিয়েম) এবং দুপুর থেকে মধ্যরাতের জন্য পিএম (পোস্ট মেরিডিয়েম)। উদাহরণস্বরূপ, 24-ঘণ্টার ফরম্যাটে 15:00 কে 3:00 PM হিসাবে উপস্থাপন করা হয়।
এই ফরম্যাটগুলির মধ্যে পছন্দ মূলত আঞ্চলিক ঐতিহ্য এবং ব্যক্তিগত পছন্দের বিষয়:
- 24-ঘণ্টার ফরম্যাটটি বেশিরভাগ ইউরোপ, লাতিন আমেরিকা এবং এশিয়ায়, পাশাপাশি বৈজ্ঞানিক, সামরিক এবং চিকিৎসা প্রসঙ্গে বিশ্বজুড়ে ব্যবহৃত হয়।
- 12-ঘণ্টার ফরম্যাটটি মার্কিন যুক্তরাষ্ট্র, কানাডা, অস্ট্রেলিয়া এবং কিছু অন্যান্য ইংরেজি ভাষী দেশের মধ্যে দৈনন্দিন ব্যবহারের জন্য প্রচলিত।
প্রান্তিক কেস এবং সীমাবদ্ধতা
ইউনিক্স টাইমস্ট্যাম্প নিয়ে কাজ করার সময়, কয়েকটি প্রান্তিক কেস এবং সীমাবদ্ধতার বিষয়ে সচেতন হওয়া গুরুত্বপূর্ণ:
-
নেতিবাচক টাইমস্ট্যাম্প: এগুলি ইউনিক্স এপোকের (1970 সালের 1 জানুয়ারি) আগে তারিখগুলি উপস্থাপন করে। যদিও গাণিতিকভাবে বৈধ, কিছু সিস্টেম নেতিবাচক টাইমস্ট্যাম্পগুলি সঠিকভাবে পরিচালনা নাও করতে পারে।
-
বছর 2038 সমস্যা: ইউনিক্স টাইমস্ট্যাম্পগুলি প্রায়শই 32-বিট সাইনড পূর্ণসংখ্যা হিসাবে সংরক্ষিত হয়, যা 19 জানুয়ারি, 2038-এ ওভারফ্লো হবে। এই সময়ের পরে, 32-বিট সিস্টেমগুলি সঠিকভাবে সময় উপস্থাপন করতে অক্ষম হবে, যদি না বড় পূর্ণসংখ্যার ধরনের ব্যবহারের জন্য পরিবর্তন করা হয়।
-
অত্যন্ত বড় টাইমস্ট্যাম্প: খুব দূরের ভবিষ্যতের তারিখগুলি কিছু সিস্টেমে উপস্থাপনযোগ্য নাও হতে পারে, অথবা অসমঞ্জস্যভাবে পরিচালিত হতে পারে।
-
লিপ সেকেন্ড: ইউনিক্স সময় লিপ সেকেন্ডের জন্য হিসাব করে না, যা মাঝে মাঝে UTC-তে পৃথিবীর অনিয়মিত ঘূর্ণনের জন্য যোগ করা হয়। এর মানে ইউনিক্স সময় জ্যোতির্বিজ্ঞানীয় সময়ের সাথে সঠিকভাবে সমন্বয় করা হয় না।
-
সময় অঞ্চল বিবেচনা: ইউনিক্স টাইমস্ট্যাম্পগুলি মুহূর্তগুলি UTC-তে উপস্থাপন করে। স্থানীয় সময়ে রূপান্তর করতে অতিরিক্ত সময় অঞ্চল তথ্য প্রয়োজন।
-
ডে লাইট সেভিং টাইম: টাইমস্ট্যাম্পগুলিকে স্থানীয় সময়ে রূপান্তর করার সময়, ডে লাইট সেভিং টাইমের পরিবর্তনের জটিলতাগুলি বিবেচনা করতে হবে।
ব্যবহার কেস
ইউনিক্স টাইমস্ট্যাম্পগুলি কম্পিউটিং এবং ডেটা ব্যবস্থাপনায় অসংখ্য অ্যাপ্লিকেশনে ব্যবহৃত হয়:
-
ডেটাবেস রেকর্ড: টাইমস্ট্যাম্পগুলি সাধারণত এন্ট্রি তৈরি বা সংশোধন করার সময় রেকর্ড করতে ব্যবহৃত হয়।
-
ওয়েব ডেভেলপমেন্ট: HTTP হেডার, কুকি এবং ক্যাশিং মেকানিজমগুলি প্রায়ই ইউনিক্স টাইমস্ট্যাম্প ব্যবহার করে।
-
লগ ফাইল: সিস্টেম লগগুলি সাধারণত ঘটনাগুলি সঠিক ক্রমে রেকর্ড করতে ইউনিক্স টাইমস্ট্যাম্প সহ।
-
সংস্করণ নিয়ন্ত্রণ সিস্টেম: Git এবং অন্যান্য VCS টাইমস্ট্যাম্প ব্যবহার করে রেকর্ড করতে যে সময়ে কমিট করা হয়।
-
API প্রতিক্রিয়া: অনেক ওয়েব API তাদের প্রতিক্রিয়াতে টাইমস্ট্যাম্প অন্তর্ভুক্ত করে যাতে ডেটা কখন তৈরি হয়েছে বা সংস্থানগুলি কখন শেষ পরিবর্তিত হয়েছে তা নির্দেশ করে।
-
ফাইল সিস্টেম: ফাইল তৈরি এবং সংশোধনের সময়গুলি প্রায়ই ইউনিক্স টাইমস্ট্যাম্প হিসাবে সংরক্ষিত হয়।
-
সেশন ব্যবস্থাপনা: ওয়েব অ্যাপ্লিকেশনগুলি ব্যবহারকারীর সেশনগুলি কখন মেয়াদ শেষ হওয়া উচিত তা নির্ধারণ করতে টাইমস্ট্যাম্প ব্যবহার করে।
-
ডেটা বিশ্লেষণ: টাইমস্ট্যাম্পগুলি বিশ্লেষণ অ্যাপ্লিকেশনগুলিতে সামঞ্জস্যপূর্ণ উপায়ে সময়গত ডেটার সাথে কাজ করার জন্য একটি মানক উপায় প্রদান করে।
বিকল্পগুলি
যদিও ইউনিক্স টাইমস্ট্যাম্পগুলি ব্যাপকভাবে ব্যবহৃত হয়, কিছু নির্দিষ্ট প্রসঙ্গে আরও উপযুক্ত সময় উপস্থাপন ফরম্যাট রয়েছে:
-
ISO 8601: একটি মানক স্ট্রিং ফরম্যাট (যেমন "2021-01-01T00:00:00Z") যা মানব-পঠনযোগ্য হওয়ার পাশাপাশি শ্রেণীবদ্ধকরণ বজায় রাখে। এটি ডেটা বিনিময় এবং ব্যবহারকারী মুখোমুখি অ্যাপ্লিকেশনগুলির জন্য প্রায়শই পছন্দ করা হয়।
-
RFC 3339: ইন্টারনেট প্রোটোকলে ব্যবহৃত ISO 8601 এর একটি প্রোফাইল, যার কঠোর ফরম্যাটিং প্রয়োজনীয়তা রয়েছে।
-
মানব-পঠনযোগ্য ফরম্যাট: স্থানীয়কৃত তারিখের স্ট্রিং (যেমন "১ জানুয়ারি, ২০২১") সরাসরি ব্যবহারকারীর মিথস্ক্রিয়ার জন্য আরও উপযুক্ত তবে গণনার জন্য কম উপযুক্ত।
-
মাইক্রোসফ্ট FILETIME: 64-বিট মান যা 1601 সালের 1 জানুয়ারি থেকে 100-ন্যানোসেকেন্ডের অন্তরগুলির সংখ্যা উপস্থাপন করে, যা উইন্ডোজ সিস্টেমে ব্যবহৃত হয়।
-
জুলিয়ান দিবস সংখ্যা: জ্যোতির্বিজ্ঞান এবং কিছু বৈজ্ঞানিক অ্যাপ্লিকেশনে ব্যবহৃত হয়, 4713 BCE থেকে দিন গোনা।
সময় ফরম্যাটের পছন্দের উপর নির্ভর করে এমন বিষয়গুলি যেমন:
- প্রয়োজনীয় নির্ভুলতা
- মানব-পঠনযোগ্যতার প্রয়োজন
- সংরক্ষণের সীমাবদ্ধতা
- বিদ্যমান সিস্টেমের সাথে সামঞ্জস্য
- যে তারিখগুলির পরিসীমা উপস্থাপন করতে হবে
ইতিহাস
ইউনিক্স সময়ের ধারণাটি 1960 এবং 1970-এর দশকের শুরুতে বেল ল্যাবসে ইউনিক্স অপারেটিং সিস্টেমের উন্নয়নের সাথে উদ্ভূত হয়। এপোক হিসাবে 1970 সালের 1 জানুয়ারিকে ব্যবহার করার সিদ্ধান্তটি কিছুটা অযৌক্তিক ছিল তবে সময়ের জন্য ব্যবহারিক—এটি আগের সময়ের জন্য সংরক্ষণের প্রয়োজনীয়তা কমাতে যথেষ্ট নতুন ছিল তবে আগের সময়ের জন্য উপকারী।
মূল বাস্তবায়নটি সেকেন্ডের সংখ্যা সংরক্ষণ করতে 32-বিট সাইনড পূর্ণসংখ্যা ব্যবহার করেছিল, যা সেই সময়ে ইউনিক্স সিস্টেমগুলির প্রত্যাশিত আয়ুষ্কালের জন্য যথেষ্ট ছিল। তবে, এই সিদ্ধান্তটি বছর 2038 সমস্যার দিকে নিয়ে গেছে (কখনও কখনও "Y2K38" বা "ইউনিক্স মিলেনিয়াম বাগ" বলা হয়), কারণ 32-বিট সাইনড পূর্ণসংখ্যাগুলি 1970-01-01 থেকে 19 জানুয়ারি, 2038 পর্যন্ত তারিখগুলি উপস্থাপন করতে পারে।
যখন ইউনিক্স এবং ইউনিক্স-সদৃশ অপারেটিং সিস্টেমগুলি জনপ্রিয়তা অর্জন করতে শুরু করে, ইউনিক্স টাইমস্ট্যাম্প কম্পিউটিংয়ে সময় উপস্থাপনের জন্য একটি অ-নিরপেক্ষ মান হিসাবে পরিণত হয়। এটি অসংখ্য প্রোগ্রামিং ভাষা, ডেটাবেস এবং অ্যাপ্লিকেশন দ্বারা গ্রহণ করা হয়, যার ফলে এটি তার মূল ইউনিক্স পরিবেশের বাইরেও প্রসারিত হয়।
আধুনিক সিস্টেমগুলি ক্রমবর্ধমান 64-বিট পূর্ণসংখ্যা টাইমস্ট্যাম্প ব্যবহার করে, যা এপোক থেকে প্রায় 292 বিলিয়ন বছর উভয় দিকে উপস্থাপনযোগ্য পরিসীমা বাড়ায়, কার্যকরভাবে বছর 2038 সমস্যার সমাধান করে। তবে, পুরনো সিস্টেম এবং অ্যাপ্লিকেশনগুলি এখনও ঝুঁকির মধ্যে থাকতে পারে।
ইউনিক্স টাইমস্ট্যাম্পের সরলতা এবং উপযোগিতা এর চলমান প্রাসঙ্গিকতা নিশ্চিত করেছে, আরও উন্নত সময় উপস্থাপন ফরম্যাটগুলির বিকাশ সত্ত্বেও। এটি কম্পিউটিংয়ে একটি মৌলিক ধারণা হিসাবে রয়ে গেছে, আমাদের ডিজিটাল অবকাঠামোর অনেকাংশকে ভিত্তি করে।
কোড উদাহরণ
নিচে বিভিন্ন প্রোগ্রামিং ভাষায় ইউনিক্স টাইমস্ট্যাম্পকে মানব-পঠনযোগ্য তারিখে রূপান্তর করার উদাহরণ দেওয়া হলো:
// জাভাস্ক্রিপ্ট টাইমস্ট্যাম্প রূপান্তর
function convertUnixTimestamp(timestamp, use12Hour = false) {
// একটি নতুন Date অবজেক্ট তৈরি করুন (জাভাস্ক্রিপ্ট মিলিসেকেন্ড ব্যবহার করে)
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);
}
// উদাহরণ ব্যবহার
const timestamp = 1609459200; // 1 জানুয়ারি, 2021 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) {
// কিছু ব্রাউজার নেতিবাচক টাইমস্ট্যাম্প সঠিকভাবে পরিচালনা নাও করতে পারে
// 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., এবং ডেনিস এম. রিচি। "সি প্রোগ্রামিং ভাষা।" প্রেন্টিস হল, 1988।