Instant এবং Epoch Time হল Java 8 থেকে java.time প্যাকেজে পরিচিত কিছু গুরুত্বপূর্ণ সময় সম্পর্কিত ধারণা। Instant ক্লাস এবং Epoch Time (Unix Time) সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে, যা UTC (Coordinated Universal Time) থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের হিসাব অনুযায়ী নির্ধারিত হয়।
1. Epoch Time (Unix Time)
Epoch Time বা Unix Time হলো 1970 সালের জানুয়ারির 1 তারিখ (00:00:00 UTC) থেকে শুরু হওয়া সেকেন্ড এবং ন্যানোসেকেন্ডের সংখ্যা। এটি পৃথিবীজুড়ে কম্পিউটার সিস্টেমে সময় ট্র্যাক করার একটি সাধারণ পদ্ধতি। সাধারণত এটি সেকেন্ড হিসেবেই ব্যবহৃত হয় (যদিও কিছু সিস্টেম ন্যানোসেকেন্ড পর্যন্ত হিসেব করে থাকে)।
2. Instant ক্লাস:
Instant ক্লাসটি java.time প্যাকেজে একটি নির্দিষ্ট সময় মুহূর্তের প্রতিনিধিত্ব করে। এটি UTC টাইমজোনে একটি নির্দিষ্ট মুহূর্তের epoch second (যা 1970 সালের জানুয়ারি 1 থেকে গণনা শুরু হয়) এবং nanosecond হিসেবে সময় ধারণ করে।
Instant এর ফিচারস:
Instantমূলত ইউনিভার্সাল সময় (UTC) দিয়ে কাজ করে।- এটি শুধুমাত্র একটি নির্দিষ্ট মুহূর্তের প্রতিনিধিত্ব করে, কোনো টাইমজোন বা স্থানীয় সময় ধারণ করে না।
Instantকখনো টাইমজোন নির্ভরশীল নয়, তাই এটিZonedDateTimeবাLocalDateTimeএর তুলনায় একটি নির্দিষ্ট সময় মুহূর্তের একটি অপরিবর্তনীয় রেফারেন্স।
Instant ক্লাসের ব্যবহার:
Instant.now()- বর্তমান সময়ের একটিInstantঅবজেক্ট তৈরি করে।Instant.ofEpochSecond()- এক্সেপ্ট সেকেন্ড থেকেInstantতৈরি করে।Instant.ofEpochMilli()- মিলিসেকেন্ড থেকেInstantতৈরি করে।Instant.plus()এবংInstant.minus()- সময় যোগ এবং বিয়োগ করার জন্য।
Instant দিয়ে নির্দিষ্ট সময় কাজ করা
Example 1: Instant.now()
Instant.now() মেথডটি বর্তমান সময়ের Instant অবজেক্ট তৈরি করে যা epoch second এবং nanosecond হিসেবে নির্দিষ্ট।
import java.time.Instant;
public class InstantNowExample {
public static void main(String[] args) {
// Get current time as Instant
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
}
}
Output:
Current Instant: 2024-12-23T09:15:30.123456789Z
ব্যাখ্যা:
Instant.now()বর্তমান সময় এবং UTC টাইমজোনে একটিInstantঅবজেক্ট তৈরি করে।
Example 2: Instant.ofEpochSecond()
Instant.ofEpochSecond() মেথডটি epoch second (1970 সালের জানুয়ারির 1 তারিখ থেকে সেকেন্ড হিসাবে পরিমাপ করা) থেকে একটি Instant তৈরি করে।
import java.time.Instant;
public class InstantEpochExample {
public static void main(String[] args) {
// Create Instant from epoch second
Instant instant = Instant.ofEpochSecond(1609459200); // January 1, 2021 00:00:00 UTC
System.out.println("Instant from epoch second: " + instant);
}
}
Output:
Instant from epoch second: 2021-01-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochSecond(1609459200)ব্যবহার করে 2021 সালের জানুয়ারি 1 তারিখ, 00:00:00 UTC সময়কেInstantঅবজেক্ট হিসেবে তৈরি করা হয়েছে। এখানে1609459200হলো Unix epoch থেকে 2021-01-01T00:00:00 এর সেকেন্ড।
Example 3: Instant.ofEpochMilli()
Instant.ofEpochMilli() মেথডটি epoch milliseconds (1970 সালের জানুয়ারির 1 তারিখ থেকে মিলিসেকেন্ড হিসাবে পরিমাপ করা) থেকে একটি Instant তৈরি করে।
import java.time.Instant;
public class InstantEpochMilliExample {
public static void main(String[] args) {
// Create Instant from epoch milliseconds
Instant instant = Instant.ofEpochMilli(1609459200000L); // January 1, 2021 00:00:00 UTC
System.out.println("Instant from epoch milliseconds: " + instant);
}
}
Output:
Instant from epoch milliseconds: 2021-01-01T00:00:00Z
ব্যাখ্যা:
Instant.ofEpochMilli(1609459200000L)ব্যবহার করে 2021 সালের জানুয়ারি 1 তারিখ, 00:00:00 UTC সময়কেInstantঅবজেক্ট হিসেবে তৈরি করা হয়েছে। এখানে1609459200000Lহলো Unix epoch থেকে 2021-01-01T00:00:00 এর মিলিসেকেন্ড।
Example 4: Adding and Subtracting Time from Instant
Instant এ সময় যোগ বা বিয়োগ করতে plus() এবং minus() মেথড ব্যবহার করা হয়।
import java.time.Instant;
public class InstantPlusMinusExample {
public static void main(String[] args) {
// Get current time as Instant
Instant now = Instant.now();
System.out.println("Current Instant: " + now);
// Add 2 hours to the current Instant
Instant futureTime = now.plusSeconds(2 * 60 * 60); // Adding 2 hours (in seconds)
System.out.println("Future Time (after 2 hours): " + futureTime);
// Subtract 3 days from the current Instant
Instant pastTime = now.minusSeconds(3 * 24 * 60 * 60); // Subtracting 3 days (in seconds)
System.out.println("Past Time (3 days ago): " + pastTime);
}
}
Output:
Current Instant: 2024-12-23T10:30:15.123456789Z
Future Time (after 2 hours): 2024-12-23T12:30:15.123456789Z
Past Time (3 days ago): 2024-12-20T10:30:15.123456789Z
ব্যাখ্যা:
plusSeconds(2 * 60 * 60)2 ঘণ্টা যোগ করেছে, এবংminusSeconds(3 * 24 * 60 * 60)3 দিন বিয়োগ করেছে।
Instant এর ভূমিকা এবং ব্যবহার
- Time Representation:
Instantক্লাসটি UTC টাইমজোনে সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে। - Epoch Time: এটি epoch second এবং nanosecond থেকে সময় নির্ধারণ করে।
- Timestamping: সাধারণত এটি টেম্পোরাল ডেটাবেসের timestamp হিসাবে ব্যবহৃত হয়।
- Time Arithmetic:
Instantব্যবহার করে সেকেন্ড বা মিলিসেকেন্ডে সময় যোগ বা বিয়োগ করা যায়, যা সময়ের নির্দিষ্ট মুহূর্তের জন্য উপযোগী।
Instantক্লাসটি সময়ের একটি নির্দিষ্ট মুহূর্তকে UTC টাইমজোনে প্রতিনিধিত্ব করে।- এটি epoch time (Unix time) এবং nanosecond precision সহ সময় পরিচালনা করতে সাহায্য করে।
Instantকে টাইমজোন নির্ধারণ করতেZonedDateTimeবাOffsetDateTimeএর সাথে ব্যবহার করা যেতে পারে, তবে এটি নিজে কোন টাইমজোন ধারণ করে না।
Read more