TL; ড
শুধুমাত্র আধুনিক জাভা.টাইম ক্লাস ব্যবহার করুন । , বা SimpleDateFormat
, এর মতো ভয়ানক উত্তরাধিকারের ক্লাস কখনও ব্যবহার করবেন না ।Date
java.sql.Timestamp
ZonedDateTime // Represent a moment as perceived in the wall-clock time used by the people of a particular region ( a time zone).
.now( // Capture the current moment.
ZoneId.of( "Africa/Tunis" ) // Specify the time zone using proper Continent/Region name. Never use 3-4 character pseudo-zones such as PDT, EST, IST.
) // Returns a `ZonedDateTime` object.
.format( // Generate a `String` object containing text representing the value of our date-time object.
DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" )
) // Returns a `String`.
অথবা জেভিএমের বর্তমান ডিফল্ট সময় অঞ্চলটি ব্যবহার করুন।
ZonedDateTime
.now( ZoneId.systemDefault() )
.format( DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" ) )
java.time এবং জেডিবিসি ৪.২
আধুনিক পদ্ধতি উপরের মত জাভা.টাইম ক্লাস ব্যবহার করে ।
আপনার যদি JDBC ড্রাইভার মেনে JDBC এর 4.2 , আপনি সরাসরি বিনিময় করতে পারেন java.time ডাটাবেসের অবজেক্টের। ব্যবহার করুন PreparedStatement::setObject
এবং ResultSet::getObject
।
মাত্র JDBC ৪.২ এর আগে ড্রাইভারদের জন্য java.sql ব্যবহার করুন
আপনার জেডিবিসি ড্রাইভার যদি জাভা.টাইম টাইপের সমর্থনের জন্য জেডিবিসি ৪.২ এর সাথে সম্মতি না দেয় তবে আপনাকে অবশ্যই জাভা.এসকিউএল ক্লাস ব্যবহার করে ফিরে যেতে হবে।
তথ্য সংরক্ষণ করা হচ্ছে।
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ; // Capture the current moment in UTC.
myPreparedStatement.setObject( … , odt ) ;
তথ্য উদ্ধার করা হচ্ছে.
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
Java.sql প্রকারের, যেমন java.sql.Timestamp
কেবলমাত্র ডাটাবেসের মধ্যে এবং বাইরে স্থানান্তর করার জন্য ব্যবহার করা উচিত। অবিলম্বে জাভা 8 এবং তার পরে জাভা.টাইম টাইপগুলিতে রূপান্তর করুন।
java.time.Instant
একটি java.sql.Timestamp
একটি মানচিত্র java.time.Instant
, ইউটিসি মধ্যে টাইমলাইনে একটি মুহূর্ত। toInstant
পুরানো শ্রেণিতে যুক্ত হওয়া নতুন রূপান্তর পদ্ধতিটি লক্ষ্য করুন ।
java.sql.Timestamp ts = myResultSet.getTimestamp( … );
Instant instant = ts.toInstant();
সময় অঞ্চল
পাওয়ার জন্য কাঙ্ক্ষিত / প্রত্যাশিত সময় অঞ্চল ( ZoneId
) প্রয়োগ করুন ZonedDateTime
।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
ফর্ম্যাট স্ট্রিংস
DateTimeFormatter
আপনার স্ট্রিং উত্পন্ন করতে একটি ব্যবহার করুন । প্যাটার্ন কোডগুলি হ'লগুলির মতো java.text.SimpleDateFormat
তবে ঠিক নয়, তাই ডকটি সাবধানে পড়ুন।
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" );
String output = zdt.format( formatter );
এই নির্দিষ্ট ফর্ম্যাটটির সঠিক অর্থটি অস্পষ্ট, কারণ এটিতে ইউটিসি বা টাইম জোনের অফসেটের কোনও ইঙ্গিত নেই ।
আইএসও 8601
এই বিষয়ে আপনার যদি কোনও বক্তব্য থাকে, আমি আপনাকে নিজের রোলিংয়ের পরিবর্তে স্ট্যান্ডার্ড আইএসও 8601 ফর্ম্যাটগুলি ব্যবহার করার বিষয়টি বিবেচনা করার পরামর্শ দিই । মানক ফর্ম্যাটটি আপনার সাথে বেশ অনুরূপ। উদাহরণস্বরূপ:
2016-02-20T03:26:32+05:30
।
জাভা.টাইম ক্লাসগুলি ডিফল্টরূপে এই স্ট্যান্ডার্ড ফর্ম্যাটগুলি ব্যবহার করে, সুতরাং কোনও প্যাটার্ন নির্দিষ্ট করার দরকার নেই। ZonedDateTime
বর্গ সময় অঞ্চল নাম (একজন বিজ্ঞ উন্নতি) সংযোজন করে প্রমিত বিন্যাস প্রসারিত করে।
String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris]
Java.sql এ রূপান্তর করুন
আপনি জাভা.টাইম থেকে আবার রূপান্তর করতে পারেন java.sql.Timestamp
। এর Instant
থেকে একটি বের করুন ZonedDateTime
।
জাভা.টাইম ক্লাসে / থেকে রূপান্তরকরণের সুবিধার্থে পুরানো শ্রেণিতে নতুন পদ্ধতি যুক্ত করা হয়েছে।
java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() );
জাভা.টাইম সম্পর্কে
Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.Date
Calendar
SimpleDateFormat
Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , এর মাইগ্রেশন উপদেশ java.time ক্লাস।
আরও জানতে, ওরাকল টিউটোরিয়ালটি দেখুন । এবং অনেক উদাহরণ এবং ব্যাখ্যার জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310 ।
আপনি আপনার ডাটাবেসের সাথে জাভা.টাইম অবজেক্টগুলি সরাসরি বিনিময় করতে পারেন । জেডিবিসি ৪.২ বা তারপরের সাথে অনুগত একটি জেডিবিসি ড্রাইভার ব্যবহার করুন । স্ট্রিংগুলির দরকার নেই, ক্লাসের প্রয়োজন নেই ।java.sql.*
জাভা.টাইম ক্লাস কোথায় পাবেন?
ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval
, YearWeek
, YearQuarter
, এবং আরো ।