TL; ড
java.time.Instant // Represent a moment as seen in UTC. Internally, a count of nanoseconds since 1970-01-01T00:00Z.
.ofEpochSecond( 1_220_227_200L ) // Pass a count of whole seconds since the same epoch reference of 1970-01-01T00:00Z.
আপনার ডেটা জানুন
প্রথম যুগের পর থেকে লোকেরা ট্র্যাকিংয়ের সময় বিভিন্ন স্পষ্টতা ব্যবহার করে । সুতরাং আপনি যখন প্রথম যুগের পরে একটি গণনা হিসাবে ব্যাখ্যা করার জন্য কিছু নম্বর পান তবে আপনাকে অবশ্যই নির্ধারণ করতে হবে:
- কোন যুগ?
বহু যুগের খেজুর বিভিন্ন সিস্টেমে ব্যবহৃত হয়েছে। সাধারণত ব্যবহৃত হয় পসিক্স / ইউনিক্স সময় , যেখানে ইউটিসি-তে 1970 এর প্রথম মুহূর্ত is তবে আপনার এই যুগটি গ্রহণ করা উচিত নয় ।
- কি নির্ভুলতা? যুগে যুগে
আমরা কি সেকেন্ড, মিলিসেকেন্ড , মাইক্রোসেকেন্ডস বা ন্যানোসেকেন্ডগুলিতে কথা বলছি ?
- কি সময় অঞ্চল?
যুগের পর থেকে সাধারণত একটি গণনা ইউটিসি / জিএমটি টাইম জোনে থাকে, অর্থাত্ কোনও টাইম জোন অফসেট হয় না। কিন্তু কখনও কখনও, অনভিজ্ঞ বা তারিখ-সময় অজ্ঞ প্রোগ্রামারদের জড়িত করার সময়, একটি অন্তর্নিহিত সময় অঞ্চল থাকতে পারে।
আপনার ক্ষেত্রে যেমন অন্যরা উল্লেখ করেছেন, ইউনিক্সের সূচনাকালীন সময় থেকে আপনাকে কয়েক সেকেন্ড দেওয়া হয়েছিল বলে মনে হচ্ছে। তবে আপনি সেই সেকেন্ডটি এমন কোনও নির্মাণকারীর কাছে যাচ্ছেন যা মিলিসেকেন্ডের প্রত্যাশা করে। সুতরাং সমাধানটি 1000 দিয়ে গুণ করা।
পাঠ শিখেছি:
- প্রাপ্ত তথ্যগুলির অর্থ নির্ধারণ করুন, ধরে নিবেন না।
- ডক পড়ুন ।
আপনার তথ্য
আপনার ডেটা পুরো সেকেন্ডে মনে হচ্ছে। যদি আমরা 1970 এর শুরুতে একটি যুগকে ধরে নিই এবং আমরা যদি ইউটিসি সময় অঞ্চলটি ধরে নিই, তবে 1,220,227,200
সেপ্টেম্বর 2008 এর প্রথম দিনের প্রথম মুহূর্ত is
Joda-টাইম
জাভা.ইটিল.ডেট এবং .ক্যালেন্ডার ক্লাস জাভায় বান্ডিল করা কুখ্যাত সমস্যাযুক্ত। এগুলি এড়িয়ে চলুন। পরিবর্তে জোদা-টাইম লাইব্রেরি বা জাভা 8-এ বান্ডিল করা নতুন জাভা.টাইম প্যাকেজটি ব্যবহার করুন (এবং জোদা-সময় দ্বারা অনুপ্রাণিত)।
নোট করুন যে জুনডেটের বিপরীতে, DateTime
জোদা-টাইমের একজন সত্যিকার অর্থে তার নিজের নির্ধারিত সময় অঞ্চলটি জানেন । সুতরাং নীচে প্রদর্শিত জোডা-টাইম ২.৪ কোডের উদাহরণে নোট করুন যে আমরা প্রথমে ইউটিসির ডিফল্ট অনুমানটি ব্যবহার করে মিলিসেকেন্ডগুলি পার্স করি। তারপরে, দ্বিতীয়ত, আমরা প্যারিসের একটি সময় অঞ্চল সামঞ্জস্য করে assign মহাবিশ্বের টাইমলাইনে একই মুহূর্ত, তবে বিভিন্ন প্রাচীর-ঘড়ির সময় । প্রদর্শনের জন্য, আমরা আবার ইউটিসিতে সমন্বয় করি। অন্তর্নিহিত ডিফল্ট (প্রায়ই তারিখের সময়কালে সমস্যার কারণ) এর উপর নির্ভর করার পরিবর্তে আপনার কাঙ্ক্ষিত / প্রত্যাশিত সময় অঞ্চলটি স্পষ্ট করে নির্দিষ্ট করা ভাল better
ডেটটাইমটি তৈরি করতে আমাদের মিলিসেকেন্ডগুলি দরকার। সুতরাং আপনার সেকেন্ডের ইনপুট নিন এবং এক হাজার দিয়ে গুণ করুন। মনে রাখবেন যে ফলাফলটি অবশ্যই একটি -৪-বিট হতে হবে long
কারণ আমরা ৩২-বিটকে উপচে ফেলেছি int
।
long input = 1_220_227_200L; // Note the "L" appended to long integer literals.
long milliseconds = ( input * 1_000L ); // Use a "long", not the usual "int". Note the appended "L".
নির্মাতাকে মিলিসেকেন্ডের গণনাটি খাওয়ান। সেই নির্দিষ্ট নির্মাতা ধরে নিলেন গণনাটি ১৯ 1970০ সালের ইউনিক্সের যুগের।
যথাযথ টাইম জোনের নাম, মহাদেশ এবং শহর / অঞ্চলের সংমিশ্রণ ব্যবহার করুন । কখনও কখনও 3 বা 4 বর্ণ কোড ব্যবহার করবেন EST
না কারণ এগুলি অনন্য নয় মানকযুক্ত।
DateTime dateTimeParis = new DateTime( milliseconds ).withZone( DateTimeZone.forID( "Europe/Paris" ) );
প্রদর্শনের জন্য, আবার সময় অঞ্চলটি সামঞ্জস্য করুন।
DateTime dateTimeUtc = dateTimeParis.withZone( DateTimeZone.UTC );
DateTime dateTimeMontréal = dateTimeParis.withZone( DateTimeZone.forID( "America/Montreal" ) );
কনসোল করতে ডাম্প। মন্ট্রিয়ালে তারিখটি কীভাবে আলাদা তা লক্ষ করুন, যেহেতু নতুন দিনটি ইউরোপে শুরু হয়েছিল তবে আমেরিকাতে এখনও নয়।
System.out.println( "dateTimeParis: " + dateTimeParis );
System.out.println( "dateTimeUTC: " + dateTimeUtc );
System.out.println( "dateTimeMontréal: " + dateTimeMontréal );
যখন রান।
dateTimeParis: 2008-09-01T02:00:00.000+02:00
dateTimeUTC: 2008-09-01T00:00:00.000Z
dateTimeMontréal: 2008-08-31T20:00:00.000-04:00
java.time
জোডা-টাইম এর নির্মাতারা আমাদের প্রতিস্থাপনে স্থানান্তর করতে বলেছেন, জাভা.টাইম কাঠামো যত তাড়াতাড়ি সম্ভব সুবিধাজনক is জোদা-টাইম সক্রিয়ভাবে সমর্থিত অব্যাহত থাকলেও, ভবিষ্যতের সমস্ত বিকাশ জাভা.টাইম ক্লাস এবং থ্রিটেন-অতিরিক্ত প্রকল্পে তাদের সম্প্রসারণে করা হবে।
জাভা-সময় কাঠামোটি জেএসআর 310 দ্বারা সংজ্ঞায়িত করা হয়েছে এবং জাভা 8 এবং তার পরে নির্মিত হয়েছে। জাভা.টাইম ক্লাসগুলি থ্রিটেন-ব্যাকপোর্ট প্রকল্পে জাভা 6 এবং 7 এবং থ্রিটেনএবিপি প্রকল্পে অ্যান্ড্রয়েডে ব্যাক-পোর্ট করা হয়েছে ।
একটি Instant
মধ্যে টাইমলাইনে একটি মুহূর্ত ইউটিসি ন্যানোসেকেন্ড একটি রেজোলিউশনে। এটি ইউটিসিতে 1970 এর প্রথম মুহূর্ত moment
Instant instant = Instant.ofEpochSecond( 1_220_227_200L );
একটি আবেদন অফসেট-থেকে-ইউটিসি ZoneOffset
একটি পেতে OffsetDateTime
।
এখনো ভালো, যদি জানা থাকে, একটি সময় জোন প্রয়োগ ZoneId
একটি পেতে ZonedDateTime
।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );