TL; ড
Instant.now() // Capture the current moment in UTC.
সেই মানটি উপস্থাপন করতে একটি স্ট্রিং উত্পন্ন করুন:
Instant.now().toString()
2016-09-13T23: 30: 52.123Z
বিস্তারিত
হিসাবে জন স্কিট দ্বারা সঠিক উত্তর বিবৃত, একটি java.util.Date বস্তুর হয়েছে কোন সময় অঞ্চল † । কিন্তু তার toString
বাস্তবায়ন জেভিএম ডিফল্ট সময় জোন প্রযোজ্য যখন যে তারিখ-সময় মান স্ট্রিং উপস্থাপনা উৎপাদিত। বিভ্রান্তিমূলকভাবে উদ্ভট প্রোগ্রামারকে, একটি তারিখের একটি সময় অঞ্চল মনে হয় তবে তা হয় না।
java.util.Date
, j.u.Calendar
, এবং java.text.SimpleDateFormat
জাভা সাথে বান্ডেল শ্রেণীর কুখ্যাতিপূর্ণভাবে বিরক্তিজনক হয়। এগুলি এড়িয়ে চলুন। পরিবর্তে, এই উপযুক্ত তারিখ-কালীন গ্রন্থাগারগুলির মধ্যে দুটি ব্যবহার করুন:
জাভা.টাইম (জাভা 8)
জাভা 8 একটি নতুন নতুন জাভা.টাইম * প্যাকেজ এনেছে পুরানো java.util . তারিখ / ক্যালেন্ডার ক্লাসগুলিকে সরবরাহ করার জন্য package
ইউটিসি / জিএমটিতে বর্তমান সময় পাওয়া একটি সহজ ওয়ান-লাইনার ...
Instant instant = Instant.now();
সেই Instant
শ্রেণিটি জাভা.টাইমের বেসিক বিল্ডিং ব্লক, ইউটিসিতে ন্যানোসেকেন্ডগুলির রেজোলিউশন সহ টাইমলাইনে একটি মুহুর্তের প্রতিনিধিত্ব করে ।
জাভা 8-এ, বর্তমান মুহূর্তটি কেবলমাত্র মিলি সেকেন্ডের রেজোলিউশনের সাহায্যে ধরা পড়ে। জাভা 9 তাজা বাস্তবায়ন এনেছে এর Clock
এই শ্রেণীর পূর্ণ ন্যানোসেকেন্ড সামর্থ্য পর্যন্ত এ যেমনটি বর্তমান মুহূর্ত, আপনার হোস্ট কম্পিউটারের ঘড়ি হার্ডওয়্যার ক্ষমতা উপর নির্ভর করে।
এটি toString
পদ্ধতিতে একটি নির্দিষ্ট আইএসও 8601 ফর্ম্যাট ব্যবহার করে এর মানটির একটি স্ট্রিং প্রতিনিধিত্ব উত্পন্ন করে । এই ফর্ম্যাটটি শূন্য, তিন, ছয় বা নয়টি অঙ্কের অঙ্ক ( মিলিসেকেন্ড , মাইক্রোসেকেন্ডস , বা ন্যানোসেকেন্ড ) আউটপুট -এর-সেকেন্ডের প্রতিনিধিত্ব করতে প্রয়োজনীয় হিসাবে আউটপুট দেয় ।
আপনি আরো নমনীয় বিন্যাস, বা অন্যান্য অতিরিক্ত বৈশিষ্ট্য চান, তাহলে শূন্য একজন অফসেট-থেকে-ইউটিসি প্রযোজ্য ইউটিসি নিজেই (জন্য ZoneOffset.UTC
ধ্রুবক ) একটি পেতে OffsetDateTime
।
OffsetDateTime now = OffsetDateTime.now( ZoneOffset.UTC );
কনসোল করতে ডাম্প ...
System.out.println( "now.toString(): " + now );
যখন চালানো…
now.toString(): 2014-01-21T23:42:03.522Z
জাভা.টাইম সম্পর্কে
Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.Date
Calendar
SimpleDateFormat
আরও জানতে, ওরাকল টিউটোরিয়ালটি দেখুন । এবং অনেক উদাহরণ এবং ব্যাখ্যার জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310 ।
Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , মাইগ্রেশনে উপদেশ java.time ক্লাস।
আপনি আপনার ডাটাবেসের সাথে জাভা.টাইম অবজেক্টগুলি সরাসরি বিনিময় করতে পারেন । জেডিবিসি ৪.২ বা তারপরের সাথে অনুগত একটি জেডিবিসি ড্রাইভার ব্যবহার করুন । স্ট্রিংগুলির দরকার নেই, ক্লাসের প্রয়োজন নেই ।java.sql.*
জাভা.টাইম ক্লাস কোথায় পাবেন?
ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval
, YearWeek
, YearQuarter
, এবং আরো ।
Joda-টাইম
আপডেট: জোদা-টাইম প্রকল্পটি এখন রক্ষণাবেক্ষণের মোডে , জাভা.টাইম ক্লাসগুলিতে স্থানান্তরের পরামর্শ দেয় ।
ব্যবহার Joda-টাইম ফ্রি-এর খরচের 3 য় পক্ষের ওপেন সোর্স গ্রন্থাগার, আপনি কোড শুধু এক লাইনে বর্তমান তারিখ-সময় পেতে পারেন।
জোদা-টাইম জাভা ৮-এ নতুন জাভা.টাইম * * ক্লাসগুলি অনুপ্রাণিত করেছে, তবে তার আলাদা স্থাপত্য রয়েছে। আপনি জাবার পুরানো সংস্করণগুলিতে জোদা-সময় ব্যবহার করতে পারেন। জোদা-টাইম জাভা 8 এ কাজ চালিয়ে যাচ্ছে এবং সক্রিয়ভাবে রক্ষণাবেক্ষণ করা অব্যাহত রেখেছে (2014 হিসাবে)। তবে জোদা-টাইম দলটি জাভা.টাইমে মাইগ্রেশন সম্পর্কিত পরামর্শ দেয়।
System.out.println( "UTC/GMT date-time in ISO 8601 format: " + new org.joda.time.DateTime( org.joda.time.DateTimeZone.UTC ) );
আরও বিশদ উদাহরণ কোড (জোদা-সময় 2.3)…
org.joda.time.DateTime now = new org.joda.time.DateTime(); // Default time zone.
org.joda.time.DateTime zulu = now.toDateTime( org.joda.time.DateTimeZone.UTC );
কনসোল করতে ডাম্প ...
System.out.println( "Local time in ISO 8601 format: " + now );
System.out.println( "Same moment in UTC (Zulu): " + zulu );
যখন চালানো…
Local time in ISO 8601 format: 2014-01-21T15:34:29.933-08:00
Same moment in UTC (Zulu): 2014-01-21T23:34:29.933Z
টাইম জোনের কাজ করার কোডের আরও উদাহরণের জন্য দেখুন আমার অনুরূপ প্রশ্নের উত্তর ।
সময় অঞ্চল
আমি আপনাকে জেভিএমের বর্তমান ডিফল্ট টাইম জোনে (যা কোনও মুহুর্তে পরিবর্তিত হতে পারে!) উপর পুরোপুরি নির্ভর করার পরিবর্তে সর্বদা একটি সময় অঞ্চল নির্দিষ্ট করার পরামর্শ দিচ্ছি। এই ধরনের নির্ভরতা তারিখ-সময়কাজে বিভ্রান্তি এবং বাগগুলির একটি সাধারণ কারণ বলে মনে হয়।
now()
পাস করার সময় কল করা কাঙ্ক্ষিত / প্রত্যাশিত সময় অঞ্চল নির্ধারিত হবে। DateTimeZone
ক্লাস ব্যবহার করুন ।
DateTimeZone zoneMontréal = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zoneMontréal );
এই শ্রেণিটি ইউটিসি সময় অঞ্চলের জন্য একটি ধ্রুবক ধারণ করে ।
DateTime now = DateTime.now( DateTimeZone.UTC );
আপনি যদি সত্যিই JVM- র বর্তমান ডিফল্ট সময় অঞ্চলটি ব্যবহার করতে চান তবে একটি স্পষ্ট কল করুন যাতে আপনার কোডটি স্ব-ডকুমেন্টিং হয়।
DateTimeZone zoneDefault = DateTimeZone.getDefault();
আইএসও 8601
আইএসও 8601 ফর্ম্যাটগুলি সম্পর্কে পড়ুন । জাভা.টাইম এবং জোদা-টাইম উভয়ই স্ট্রিংকে পার্সিং এবং উত্পন্ন করার জন্য তাদের ডিফল্ট হিসাবে স্ট্যান্ডার্ডের বোধগম্য বিন্যাসগুলি ব্যবহার করে।
† বাস্তবিক, java.util.Date করে একটি সময় জোন, সোর্স কোড স্তর অধীনে গভীর কবর আছে। বেশিরভাগ ব্যবহারিক উদ্দেশ্যে, সময় অঞ্চলটি উপেক্ষা করা হয়। সুতরাং, শর্টহ্যান্ড হিসাবে, আমরা বলি java.util. তারিখের কোনও সময় অঞ্চল নেই। তদ্ব্যতীত, সমাধিস্থ হওয়া সময় অঞ্চলটি তারিখের পদ্ধতি দ্বারা ব্যবহৃত হয় নাtoString
; এই পদ্ধতিটি জেভিএমের বর্তমান ডিফল্ট সময় অঞ্চল ব্যবহার করে। এই বিভ্রান্তিকর ক্লাসটি এড়ানোর এবং জোদা-সময় এবং জাভা.টাইমের সাথে লেগে থাকার আরও বেশি কারণ।