কীভাবে বর্তমান তারিখ এবং সময় পাবেন


342

আমি জাভাতে কীভাবে বর্তমান তারিখ এবং সময় পাব?

আমি এমন কিছু সন্ধান করছি যা DateTime.Nowসি # এর সমতুল্য ।


এই প্রশ্নটি পূর্বে সদৃশ হিসাবে চিহ্নিত এই প্রশ্নের চেয়ে পুরানো । সুতরাং আমি এই পদক্ষেপটি বিপরীত করেছি, এই প্রশ্নটি আবার খুলছি এবং নতুনটিকে সদৃশ হিসাবে চিহ্নিত করছি।
তুলসী বাউরক

উত্তর:


414

Dateকোনও যুক্তি ছাড়াই কেবল একটি নতুন অবজেক্ট তৈরি করুন; এটি নতুন অবজেক্টকে বর্তমান তারিখ এবং সময় নির্ধারণ করবে।

import java.util.Date;

Date d = new Date();

এর কথায় Javadocs জন্যশূন্য-আর্গুমেন্ট :

একটি তারিখ অবজেক্ট বরাদ্দ করে এবং এটি সূচনা করে যাতে এটি নির্ধারিত সময়ের মিলিসেকেন্ডে পরিমাপকৃত সময়টিকে উপস্থাপন করে।

আপনি ব্যবহার করছেন java.util.Dateএবং করছেন না তা নিশ্চিত করুন java.sql.Date- পরবর্তীটির কোনও শূন্য-আরগ নির্মাণকারী নেই এবং এর কিছুটা আলাদা শব্দার্থবিজ্ঞান রয়েছে যা সম্পূর্ণ আলাদা কথোপকথনের বিষয়। :)


13
এছাড়াও নোট করুন যে গ্রেগরিয়ানক্যালেন্ডার এবং আরও অনেক অনুরূপ অবজেক্ট একইভাবে কাজ করে। সুতরাং আপনি যে ধরণের তারিখ / ক্যালেন্ডার অবজেক্টের সাথে কাজ করছেন, জিরো-আর্গুমেন্ট কনস্ট্রাক্টর সাধারণত বর্তমান তারিখ / সময় থেকে অবজেক্টটি আরম্ভ করে।
পিটার ডি সেকো

তারিখ ডক থেকে: জেডিকে ১.১ হিসাবে, ক্যালেন্ডার ক্লাসটি তারিখ এবং সময় ক্ষেত্রের মধ্যে রূপান্তর করতে ব্যবহার করা উচিত এবং তারিখের ফর্ম্যাট এবং পার্স করার জন্য ডেটফর্ম্যাট ক্লাসটি ব্যবহার করা উচিত।
পাওলো এম

9
দয়া করে নতুন জাভা 8 এপিআইগুলি বিবেচনা করুন - লোকালডেটটাইম.নো () এবং জোনেডেটটাইম.নো ()
ওলেগ

59

জাভা তারিখ এবং ক্যালেন্ডার ক্লাসগুলি অনেকেই খারাপভাবে ডিজাইন করেছেন বলে বিবেচনা করে। আপনি জোডা সময় এক নজর করা উচিত জাভা , জাভা অন্তর্নির্মিত তারিখ লাইব্রেরির পরিবর্তে সাধারণত ব্যবহৃত একটি লাইব্রেরির ।

DateTime.Nowজোদা সময়ের সমতুল্য হ'ল:

DateTime dt = new DateTime();

হালনাগাদ

মন্তব্যে উল্লিখিত হিসাবে, জোদা সময়ের সর্বশেষতম সংস্করণগুলির একটি DateTime.now()পদ্ধতি রয়েছে, তাই:

DateTime dt = DateTime.now();

4
জোদার বর্তমান (২.১) সংস্করণটিতে একটি স্থির ডেটটাইম.নো পদ্ধতি রয়েছে () বিকল্পভাবে ডেটটাইমজোন বা ক্রোনোলজি গ্রহণ করে। joda-Time.sourceforge.net/apidocs/org/joda/time/…
রোমান এ। টেচার

1
নোট করুন যে এই উত্তরটি 2010 সালে পোস্ট করা হয়েছিল Java জাভা 8 জোদা সময়ের সেরা বৈশিষ্ট্যগুলিকে শোষণ করেছে। দেখুন কর্মকর্তা ডকুমেন্টেশন এবং আরও তথ্যের জন্য অনেক অন্যান্য অনলাইন নিবন্ধ।
ডেভিডএস

36

TL; ড

Instant.now()

java.time

জাভা.ইটিল.ডেট ক্লাসটি জাভা ৮ এবং তার পরে নতুন জাভা.টাইম প্যাকেজ ( টিউটোরিয়াল ) দ্বারা তৈরি হয়েছে। পুরানো java.util. তারিখ /.ক্যালেন্ডার ক্লাসগুলি কুখ্যাত সমস্যা, বিভ্রান্তিকর এবং ত্রুটিযুক্ত। এগুলি এড়িয়ে চলুন।

ZonedDateTime

জাভা.টাইমে বর্তমান মুহুর্তটি পান।

ZonedDateTime now = ZonedDateTime.now();

একটি ZonedDateTimeencapsulates:

যদি কোনও সময় অঞ্চল নির্দিষ্ট না করা থাকে, আপনার জেভিএমের বর্তমান ডিফল্ট সময় অঞ্চলটি নিঃশব্দভাবে বরাদ্দ করা হয়েছে। আপনার পছন্দসই / প্রত্যাশিত সময় অঞ্চলটি ডিফল্টর উপর অন্তর্নিহিত নির্ভরতার চেয়ে নির্দিষ্ট করা ভাল।

ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z );

ইউটিসি

সাধারণত ইউটিসিতে আপনার ব্যাক-এন্ড কাজ (ব্যবসায়িক যুক্তি, ডাটাবেস, স্টোরেজ, ডেটা এক্সচেঞ্জ) করার অভ্যাসটি পেতে সাধারণত আরও ভাল টাইম জোনে । উপরের কোডটি জেভিএমের বর্তমান ডিফল্ট টাইম জোনের উপর পুরোপুরি নির্ভর করে।

Instantবর্গ ন্যানোসেকেন্ড একটি রেজোলিউশনে UTC- এ টাইমলাইনে একটি মুহূর্ত প্রতিনিধিত্ব করে।

Instant instant = Instant.now();

Instantবর্গ java.time একটি মৌলিক বিল্ডিং-ব্লক ক্লাস হয় এবং আপনার কোডে প্রায়ই ব্যবহৃত হতে পারে।

আপনার যখন বিন্যাসে আরও নমনীয়তা দরকার তখন একটিতে রূপান্তর করুন OffsetDateTime। একটি ZoneOffsetবস্তু নির্দিষ্ট করুন । ইউটিসির জন্য ইউটিসির জন্য হ্যান্ডি ধ্রুবক ব্যবহার করুন ।

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );

সময় অঞ্চল

ব্যবহারকারীর কাছে উপস্থাপনের জন্য আপনি সহজেই অন্য একটি টাইম জোনের সাথে সামঞ্জস্য করুন। যথাযথ টাইম জোনের নাম ব্যবহার করুন , কখনও কখনও 3-4 টি লেটার কোড যেমন ESTবা হয় না IST

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z );

স্থানীয়ভাবে চিহ্নিত সেই তারিখ-সময়ের মানটির একটি স্ট্রিং প্রতিনিধিত্ব করুন।

String output = DateTimeFormatter
    .ofLocalizedDate( FormatStyle.FULL )
    .withLocale( Locale.CANADA_FRENCH )
    .format ( nowMontreal );

Instant

অথবা, ইউটিসিতে থাকতে, ব্যবহার করুন InstantInstantসর্বদা ইউটিসিতে ন্যানোসেকেন্ড রেজোলিউশনে কোনও অবজেক্ট সময়রেখার এক মুহূর্তকে উপস্থাপন করে। এটি সময় অঞ্চল নির্ধারণের সাথে জোনড তারিখ-সময়ের জন্য বিল্ডিং ব্লক সরবরাহ করে। আপনি ধারণাটি এইভাবে ভাবতে পারেন:

ZonedDateTime= Instant+ZoneId

আপনি একটি Instantথেকে একটি নিষ্কাশন করতে পারেন ZonedDateTime

Instant instantNow = zdt.toInstant();

আপনি একটি তাত্ক্ষণিক দিয়ে শুরু করতে পারেন। Instantসর্বদা ইউটিসির মতো এখানে সময় অঞ্চল নির্দিষ্ট করার দরকার নেই ।

Instant now = Instant.now();

আমি সদৃশ প্রশ্নের আরও বিশদ সহ আরও একটি উত্তর পোস্ট করেছি ।
তুলসী বাউরক

16

আমি ক্যালেন্ডার অবজেক্ট ব্যবহার করতে পছন্দ করি।

Calendar now = GregorianCalendar.getInstance()

আমি কাজ করতে অনেক সহজ মনে করি। আপনি ক্যালেন্ডার থেকে একটি তারিখ অবজেক্টও পেতে পারেন।

http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html


4
বা এটি সহজভাবে হতে পারেCalendar.getInstance()
আঁকুন



10

java.lang.System.currentTimeMillis(); যুগে যুগে ডেটটাইম ফিরিয়ে দেবে


লগিংয়ের জন্য ভাল তবে ব্যবহারকারীকে প্রদর্শনের জন্য পার্সিং এবং রূপান্তর প্রয়োজন
দুয়া


5

আপনি যদি কোনও নতুন তারিখ অবজেক্ট তৈরি করেন তবে ডিফল্টরূপে এটি বর্তমান সময়ে সেট করা হবে:

import java.util.Date;
Date now = new Date();

3

তারিখ এবং সময় ব্যবহারের ক্ষেত্রে জাভা সর্বদা অপর্যাপ্ত সমর্থন পেয়েছে। উদাহরণস্বরূপ, বিদ্যমান ক্লাসগুলি (যেমন java.util.Dateএবং SimpleDateFormatter) থ্রেড-নিরাপদ নয় যা সম্মতিযুক্ত সমস্যার কারণ হতে পারে। এছাড়াও এপিআইতে কিছু ত্রুটি রয়েছে। উদাহরণস্বরূপ, বছরগুলি java.util.Date1900 এ শুরু হয়, মাসগুলি 1 থেকে শুরু হয় এবং দিনগুলি 0 at থেকে শুরু হয় খুব স্বজ্ঞাত নয়। এই সমস্যাগুলি তৃতীয় পক্ষের তারিখ এবং সময় গ্রন্থাগারগুলির জনপ্রিয়তার দিকে পরিচালিত করে Joda-Time। একটি নতুন তারিখ এবং সময় সম্বোধন করতে এপিআই জাভা এসই 8 এর জন্য ডিজাইন করা হয়েছে।

LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);

অনুযায়ী ডক :

পদ্ধতিটি now()সিস্টেমের ক্লক এবং ডিফল্ট সময়-অঞ্চলটি ব্যবহার করে বর্তমান তারিখ-সময়টি দেয়, নਾਲ নয় । এটি ডিফল্ট সময়-অঞ্চলের সিস্টেম ঘড়ি থেকে বর্তমান তারিখ-সময়টি অর্জন করে। এটি বর্তমান তারিখ-সময়টি পেতে ডিফল্ট সময়-অঞ্চলে সিস্টেমের ঘড়ির প্রশ্ন করবে। এই পদ্ধতিটি ব্যবহার করা পরীক্ষার জন্য বিকল্প ঘড়ি ব্যবহারের ক্ষমতা আটকাবে কারণ ঘড়িটি কঠোর কোডড।

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