জাভাতে স্ট্রিং ফর্ম্যাটে কীভাবে বর্তমান টাইমস্ট্যাম্প পাবেন? "Yyyy.MM.dd.HH.mm.ss"


174

জাভাতে স্ট্রিং ফর্ম্যাটে টাইমস্ট্যাম্প কিভাবে পাবেন? "Yyyy.MM.dd.HH.mm.ss"

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());

এটি আমার কাছে রয়েছে তবে টাইমস্ট্যাম্পের জন্য একটি পরামিতি প্রয়োজন ...


রেডিস্ট্যাটমেন্ট.সেটটাইমস্ট্যাম্প (1, নতুন টাইমস্ট্যাম্প (সিস্টেম.কন্ট্রেন্টটাইমমিলিস ()));
রজত

আপনি কি ত্রুটি পাচ্ছেন?
রবার্ট কলম্বিয়া

এফওয়াইআই, ভয়াবহভাবে ঝামেলাজনক পুরাতন তারিখের সময়ের ক্লাস যেমন SimpleDateFormatএবং java.sql.Timestampএখন লিগ্যাসি , জাভা time টাইম ক্লাস দ্বারা জাভা ৮ এবং তার পরে নির্মিত supp ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
তুলসী বার্ক

উত্তর:


202

প্রতিস্থাপন করা

new Timestamp();

সঙ্গে

new java.util.Date()

কারণ এখানে কোনও ডিফল্ট কনস্ট্রাক্টর নেই Timestamp, বা আপনি পদ্ধতিটি দিয়ে এটি করতে পারেন:

new Timestamp(System.currentTimeMillis());

5
এফওয়াইআই, ভয়াবহভাবে ঝামেলাজনক পুরাতন তারিখের সময়ের ক্লাস যেমন java.util.Dateএবং java.sql.Timestampএখন লিগ্যাসি , জাভা time টাইম ক্লাস দ্বারা জাভা ৮ এবং তার পরে নির্মিত supp ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
তুলসী বার্ক

160

java.util.Dateটাইমস্ট্যাম্পের পরিবর্তে ক্লাস ব্যবহার করুন ।

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());

এটি নির্দিষ্ট ফর্ম্যাটে আপনার বর্তমান তারিখটি পাবেন।


5
এটি আমাকে সাহায্য করেছিল এবং আমি কিছু পরিবর্তন করেছি যাতে আমাকে আমদানি করতে হবে না new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date())
পিনি চেনি

আরও ভাল new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(new Date());
জোন

36

TL; ড

শুধুমাত্র আধুনিক জাভা.টাইম ক্লাস ব্যবহার করুন । , বা SimpleDateFormat, এর মতো ভয়ানক উত্তরাধিকারের ক্লাস কখনও ব্যবহার করবেন না ।Datejava.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.DateCalendarSimpleDateFormat

Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , এর মাইগ্রেশন উপদেশ java.time ক্লাস।

আরও জানতে, ওরাকল টিউটোরিয়ালটি দেখুন । এবং অনেক উদাহরণ এবং ব্যাখ্যার জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310

আপনি আপনার ডাটাবেসের সাথে জাভা.টাইম অবজেক্টগুলি সরাসরি বিনিময় করতে পারেন । জেডিবিসি ৪.২ বা তারপরের সাথে অনুগত একটি জেডিবিসি ড্রাইভার ব্যবহার করুন । স্ট্রিংগুলির দরকার নেই, ক্লাসের প্রয়োজন নেই ।java.sql.*

জাভা.টাইম ক্লাস কোথায় পাবেন?

ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval, YearWeek, YearQuarter, এবং আরো


সুতরাং "yyyy.MM.dd.HH.mm.ss" ফর্ম্যাটে বর্তমান প্রাচীর ঘড়ির সময় স্ট্যাম্পটি পাওয়ার সঠিক উপায় কী? আমার স্থানীয় সময় অঞ্চলটির স্পষ্টভাবে হার্ড-কোডেড স্ট্রিংটি উল্লেখ না করে? টপিক স্টার্টার এটিই জিজ্ঞাসা করেছিলেন, এবং আমি আপনার উত্তরে এটি খুঁজে পেলাম না ...
t7ko

@ t7ko আমি টিএল; ডা বিভাগে উদাহরণ কোডের একটি লাইন যুক্ত করে দেখিয়েছি কীভাবে জেভিএমের বর্তমান ডিফল্ট সময় অঞ্চলটির জন্য স্পষ্টভাবে জিজ্ঞাসা করতে হবে। কোনও যুক্তি ছাড়াই `এখন () 'কল করা একই কাজ করে তবে আপনি ডিফল্টটি ব্যবহার করতে চেয়েছিলেন বা সময় অঞ্চলটির গুরুত্বপূর্ণ সমস্যা সম্পর্কে আপনি যদি অজ্ঞ বা ভুলে গেছেন তবে তা পরিষ্কার নয়।
তুলসী বার্ক

32

আপনি টাইমস্ট্যাম্পের পরিবর্তে java.util.Date ব্যবহার করতে পারেন:

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());

6

একটি আরও উপযুক্ত পদ্ধতির কনস্ট্রাক্টরের প্যারামিটার হিসাবে লোকেল অঞ্চল নির্দিষ্ট করা। নীচের উদাহরণে মার্কিন স্থানীয় অঞ্চল ব্যবহার করা হয়েছে। তারিখ বিন্যাসটি স্থানীয়-সংবেদনশীল এবং ব্যবহারকারীর অঞ্চলের লোকাল (জাভা প্ল্যাটফর্ম এসই 7) এর রীতিনীতি এবং সম্মেলনের সাথে সম্পর্কিত তথ্য অনুসারে লোকেল ব্যবহার করে and

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());

1
"লোকেল অঞ্চল" এর মতো কোনও জিনিস নেই। আমি সন্দেহ করি যে আপনার বিভ্রান্তিকর Localeএবং সময় অঞ্চল যা সম্পর্কিত নয়। Localeফর্ম্যাট করার জন্য সাংস্কৃতিক মানদণ্ড এবং মাস / দিনের নাম হিসাবে ব্যবহৃত মানব ভাষা নিয়ন্ত্রণ করে। সময় অঞ্চলটি কোনও কোনও অঞ্চলের প্রাচীর-ঘড়ির জন্য উপযুক্ত হওয়ার জন্য তারিখ-সময় উপস্থাপনাটি সামঞ্জস্য করে । এই প্রশ্নের ক্ষেত্রে, লোকেল অপ্রাসঙ্গিক কারণ এখানে সংস্কৃতিগত নিয়মাবলী প্রয়োগ করার মতো কোনও ফর্ম্যাটিক সমস্যা নেই বা কোনও নির্দিষ্ট মানব ভাষায় স্থানীয়করণের জন্য মাস / দিনের কোনও নাম নেই।
বেসিল বাউরেক

@ বাসিলবার্ক আপনার ইনপুট দেওয়ার জন্য আপনাকে ধন্যবাদ। আমি উত্তরটি আরও স্পষ্ট হতে আপডেট করেছি
user3144836

4

আপনি নিম্নলিখিত ব্যবহার করতে পারেন

new java.sql.Timestamp(System.currentTimeMillis()).getTime()

Result : 1539594988651

আশা করি এটি সাহায্য করবে। পুরস্কার পয়েন্টের জন্য নয় কেবল আমার পরামর্শ।


এটিতে স্ট্রিং ফর্ম্যাটটির জন্য জিজ্ঞাসা করা হয়নি। এছাড়াও আমি আশঙ্কা করছি যে এটি একই ধরণের উত্তরগুলিতে একমাত্র যুক্ত করে, এটি অযথা জটিলতা…
ওলে ভিভি

4

java.timeআপনি যদি জাভা 8 বা আরও নতুন ব্যবহার করেন তবে আধুনিক ক্লাসগুলি ব্যবহার করুন।

String s = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());

বাসিল বাউরকের উত্তরটি বেশ ভাল। তবে এটি অনেক দীর্ঘ। এটি পড়তে অনেকেরই ধৈর্য থাকবে না। শীর্ষ 3 উত্তরগুলি খুব পুরানো এবং জাভা নতুন মৌমাছিকে বিভ্রান্ত করতে পারে o তাই আমি নতুন আগত ডেভসের জন্য এই সংক্ষিপ্ত এবং আধুনিক উত্তর সরবরাহ করব। আশা করি এই উত্তরটি ভয়ানক ব্যবহার হ্রাস করতে পারে SimpleDateFormat

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.