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


1106

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


3
43 টি উত্তর! যখন তাদের অনেকগুলি লেখা হয়েছিল তখন ভাল ছিল, 2018 সালে ব্যবহারের ভাল উত্তর এখানে
ওলে ভিভি

উত্তর:


1308

আপনি ব্যবহার করতে পারেন:

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

আপনার প্রয়োজনীয় সমস্ত কিছুর জন্য ক্যালেন্ডারে প্রচুর ধ্রুবক রয়েছে।

সম্পাদনা করুন: ক্যালেন্ডার শ্রেণীর ডকুমেন্টেশন
পরীক্ষা করুন


14
+1 এটি খুব সহায়ক ছিল। নতুন হওয়ার কারণে আমাদের এই ছোট ছোট ছোট টিবিটসের দরকার ... আমি জুলিয়ান তারিখ পেতে ক্যালেন্ডারটি ব্যবহার করছি। মিলিসেকেন্ডগুলি পাওয়া এবং মূল্য আজকের সমান হয় তা নির্ধারণের চেয়ে অনেক সহজ;)
বিল মোট

9
তবে এখান থেকে তারিখ এবং সময়টি কোথায় টানবে? অ্যান্ড্রয়েড ডিভাইস নিজেই সেটিং করছে?
কাইল Clegg

12
@ কাইল হ্যাঁ, এটি ডিভাইসের সময় সেটিংস / সময় অঞ্চল ভিত্তিক। দস্তাবেজ থেকে উদ্ধৃতি : "ক্যালেন্ডারের getInstance পদ্ধতি এমন একটি ক্যালেন্ডার প্রদান করে যার লোকেল সিস্টেম সেটিংসের উপর ভিত্তি করে এবং যার সময় ক্ষেত্রগুলি বর্তমান তারিখ এবং সময় দিয়ে শুরু করা হয়েছে" - (ক্লাস ডকুমেন্টেশনের প্রথম সাম্পলকোড লাইনের উপরে)।

3
এই সমাধানটিতে +1 মিলিসেকেন্ড যথার্থতা রয়েছে, ঠিক আমার যা প্রয়োজন।
ইগর জেলায়া

42
যেমন @ অ্যাড্যাম্পোর্ট বলেছেন, এটি আসলে প্রশ্নের উত্তর দেয় না ... Calendar.getInstance().getTime()বা Calendar.getInstance().getTimeInMillis()কাজ করবে।
আকসৌমতা

487

আপনি ( তবে আর দেখতে হবে না - নীচে দেখুন!) Android.text.format.Time ব্যবহার করতে পারেন :

Time now = new Time();
now.setToNow();

উপরে লিঙ্কযুক্ত রেফারেন্স থেকে:

সময় শ্রেণিটি জাভা.ইটিল.ক্যালেন্ডার এবং জাভা.ইটিল.গ্রিগরিয়ানক্যালেন্ডার ক্লাসগুলির জন্য দ্রুত প্রতিস্থাপন। সময় শ্রেণীর একটি উদাহরণ দ্বিতীয় মুহূর্তের সাথে নির্দিষ্ট করে একটি মুহুর্তকে উপস্থাপন করে।


দ্রষ্টব্য 1: আমি এই উত্তরটি লেখার পরে বেশ কয়েক বছর হয়েছে, এবং এটি একটি পুরানো, অ্যান্ড্রয়েড-নির্দিষ্ট এবং এখন অবহেলিত শ্রেণির সম্পর্কে। গুগল এখন বলেছে যে "[টি] তার শ্রেণিতে বেশ কয়েকটি সমস্যা রয়েছে এবং এর পরিবর্তে গ্রেগরিয়ানক্যালেন্ডার ব্যবহার করা উচিত"।


দ্রষ্টব্য 2: ক্লাসটির Timeএকটি toMillis(ignoreDaylightSavings)পদ্ধতি থাকলেও, এটি মিলিসেকেন্ডে সময় আশা করে এমন পদ্ধতিগুলিতে পাস করা কেবল একটি সুবিধা। সময় মানটি এক সেকেন্ডে কেবল নির্ভুল ; মিলিসেকেন্ড অংশ সর্বদা হয় 000। যদি একটি লুপ আপনি না

Time time = new Time();   time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...

ফলস্বরূপ ক্রম একই মানটির পুনরাবৃত্তি করবে যেমন 1410543204000পরবর্তী পরের দ্বিতীয়টি শুরু না হওয়া অবধি, যে সময়ে 1410543205000পুনরাবৃত্তি শুরু হবে।


2
@InsanityOnabun এবং মুহাম্মদ বাবর। না না না. ডক্স বলছে "দ্বিতীয় নির্ভুলতার সাথে নির্দিষ্ট" এমনকি সবচেয়ে সহজ পরীক্ষা (একটি লুপে বর্তমান সময় পাওয়া, টু মিলিস, এবং লগিং / ফলাফল প্রিন্ট করা) আপনাকে দেখিয়ে দিত যে ফলস্বরূপ সময়টি মিলিসেকেন্ড অংশ হিসাবে 000 রয়েছে!
টুলমেকারস্টেভ

3
@ ইগরজেলা আপনি যদি মিলিসেকেন্ডের নির্ভুলতা চান তবে আপনি সম্ভবত দিনের সময়ের চেয়ে অন্তরের সময়সীমাটি করছেন । অ্যান্ড্রয়েড ডক্স SystemClock.uptimeMillis()বিরতি সময় জন্য সুপারিশ । যেহেতু এটি বেশিরভাগ অন্তর্নির্মিত ফাংশনগুলি ব্যবহার করে, তাই এটি সমস্ত ডিভাইসে কার্যকরভাবে প্রয়োগ করার জন্য প্রবল প্রেরণা রয়েছে। সিস্টেমক্লকটিতে আলোচনাটি দেখুন ... আপনি যদি দিনের সময়ের সাথে অ্যাপ্লিকেশনটির রিসুমিতে এটির সাথে সম্পর্ক স্থাপন করতে চান তবে এটি এবং টাইম / সেটটোনা / টু মিলিস উভয়টি পড়ুন। তাদের মধ্যে পার্থক্য মনে রাখবেন।
টুলমেকারস্টেভ

টাইম ক্লাস ব্যবহার করবেন না । এটি ভবিষ্যতে মুছে ফেলা হবে এবং এর সাথে অনেকগুলি সমস্যা রয়েছে।
স্যান্ডি চ্যাপম্যান

1
> এই শ্রেণিটি 22 এপিআই স্তরে অবনতি হয়েছে instead এখানে
নিও

প্রকৃতপক্ষে, জাভা.টাইম ক্লাসগুলি GregorianCalendarদ্বারা জাভা.টাইম ক্লাসগুলি দ্বারা বেশ কয়েক বছর আগে জাভা এবং পরবর্তী অ্যান্ড্রয়েডে স্পপ্লান্ট করা হয়েছিল ZonedDateTime। পূর্ববর্তী অ্যান্ড্রয়েডের জন্য, থ্রিটেন-ব্যাকপোর্ট এবং থ্রিটেনএবিপি প্রকল্প দেখুন।
তুলসী বাউরিক

365

আপনি যদি একটি নির্দিষ্ট প্যাটার্নে তারিখ এবং সময় পেতে চান তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());

অথবা,

তারিখ :

String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());

সময়:

String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());

এটি ইউটিসিতে সময় দেবে, সময় অঞ্চলগুলিতে গ্রহণ করা উচিত।
আন্দ্রেস বালেজ লজ্জা

10
সাবধান থাকুন, পারফরম্যান্স কোনও সমস্যা হলে সিম্পলডিটফর্ম্যাট সমস্যাযুক্ত হতে পারে। আমার অ্যাপ্লিকেশনটিতে আমার কাছে একটি কাস্টম ভিউ ছিল যা সম্পর্কে প্রায় 20 এইচএইচ: এমএম লেবেলগুলি নির্দিষ্ট সময়কে উপস্থাপন করে (দীর্ঘ সংখ্যক মিলিসেকেন্ড ধারণ করে), এবং সমান সংখ্যক অঙ্কনযোগ্য সংস্থান রয়েছে। প্রাথমিক পরীক্ষাটি দেখায় যে মিথস্ক্রিয়াটি আমি চেয়েছিলাম তত তরল ছিল না। আমি যখন ড্র () এ প্রোফাইল করলাম তখন আমি দেখতে পেলাম যে সিম্পলটাইমফর্ম্যাটর কলগুলি 80% সময় নিচ্ছে। প্রকৃতপক্ষে, আমি আরও কার্যকর ফর্ম্যাটারের সন্ধানের জন্য এবং ক্যালেন্ডার ইত্যাদি সম্পর্কে আরও জানতে এই পৃষ্ঠাটি পড়ছি
উইলিয়াম টি। ম্যালার্ড

3
হ্যাঁ, তবে আর নেই। আমি ওভারহেড জড়িত বুঝতে পারি নি এবং ধরে নিয়েছিলাম যে এটি বেশ পজো।
উইলিয়াম টি। ম্যালার্ড

32
সংক্ষেপে:String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
প্রতীক বুটানী

4
আপনি sdf.setTimeZone(TimeZone.getDefault())মাঝখানে সন্নিবেশ করতে পারেন
হার্ভে

231

যাঁরা বরং কাস্টমাইজড ফর্ম্যাটটি পছন্দ করেন তাদের জন্য, আপনি ব্যবহার করতে পারেন:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());

যদিও আপনার কাছে ডেটফর্ম্যাট নিদর্শন থাকতে পারে যেমন:

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

126

প্রকৃতপক্ষে, ডিভাইসে বর্তমান টাইমজোন সেটটি সহ সুরক্ষিত করা Time.getCurrentTimezone()অন্যথায় আপনি ইউটিসিতে বর্তমান সময়টি পাবেন।

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

তারপরে, আপনি চাইলে সমস্ত তারিখের ক্ষেত্রগুলি পেতে পারেন, উদাহরণস্বরূপ:

textViewDay.setText(today.monthDay + "");             // Day of the month (1-31)
textViewMonth.setText(today.month + "");              // Month (0-11)
textViewYear.setText(today.year + "");                // Year 
textViewTime.setText(today.format("%k:%M:%S"));  // Current time

সমস্ত তথ্যের জন্য android.text.format.Time ক্লাস দেখুন ।

হালনাগাদ

যেহেতু অনেক লোক ইশারা করছে, গুগল বলছে এই শ্রেণীর অনেকগুলি সমস্যা রয়েছে এবং এটি আর ব্যবহার করার কথা নয়:

এই শ্রেণিতে বেশ কয়েকটি সমস্যা রয়েছে এবং এর পরিবর্তে গ্রেগরিয়ানক্যালেন্ডার ব্যবহার করা বাঞ্ছনীয়।

জ্ঞাত সমস্যা:

Calcতিহাসিক কারণে যখন সময় গণনা সম্পাদন করা হয় তখন সমস্ত পাটিগণিত বর্তমানে 32-বিট পূর্ণসংখ্যা ব্যবহার করে ঘটে। এটি নির্ভরযোগ্য নির্ভরযোগ্য সময়সীমাটি ১৯০২ থেকে শুরু করে ২০৩37 সাল পর্যন্ত সীমাবদ্ধ করে দেয় details বিশদগুলির জন্য ২০৩৮ সালের সমস্যাটিতে উইকিপিডিয়া নিবন্ধটি দেখুন। এই আচরণের উপর নির্ভর করবেন না; এটি ভবিষ্যতে পরিবর্তন হতে পারে। অস্তিত্ব থাকতে পারে না এমন তারিখে স্যুইচটাইমজোনকে (স্ট্রিং) কল করা, যেমন একটি ডিএসটি ট্রানজিশনের কারণে প্রাচীরের সময়কে বাদ দেওয়া হয়েছিল, যার ফলস্বরূপ 1969 সালে (অর্থাৎ -1, বা 1 ই জানুয়ারীর 1 টি ইউটিসির আগে 1 সেকেন্ড) ফলাফল আসবে। ফর্ম্যাটিং / পার্সিংয়ের বেশিরভাগই ASCII পাঠ্যকে ধরে নেয় এবং তাই অ-এসসিআইআই স্ক্রিপ্টগুলির সাথে ব্যবহারের জন্য উপযুক্ত নয়।


সময় কোন প্যাকেজ থেকে আমদানি করা উচিত?
মনীশবি

এই শ্রেণীটি এপিআই 22 স্তরে অবনতি হয়েছে We আমরা পরিবর্তে গ্রেগরিয়ানক্যালেন্ডার ব্যবহার করতে পারি।
চোলতস্কি

78

বর্তমান তারিখ এবং সময় জন্য, ব্যবহার করুন:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

কোন ফলাফল:

Feb 27, 2012 5:41:23 PM

আমি সিস্টেমের বর্তমান তারিখ, দিন এবং সময় পেয়েছি কিন্তু সময় পরিবর্তন হচ্ছে না i আমি সেকেন্ডে সময় সেকেন্ড বাড়িয়ে নিতে চাই? কীভাবে করব?
ভবেশ হিরপাড়া

2
এটি হ'ল এটি করার প্রস্তাবিত উপায়, অ্যান্ড্রয়েড এপিআই অনুসারে: developer.android.com/references/java/text/… ধন্যবাদ!
এম গ্রানজা

58

তারিখ এবং সময় ফর্ম্যাট পেতে সমস্ত ফর্ম্যাট নীচে দেওয়া আছে এইভাবে চেষ্টা করুন।

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

প্রথম

দ্বিতীয় তৃতীয়


53

TL; ড

Instant.now()  // Current moment in UTC.

... অথবা ...

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // In a particular time zone

বিস্তারিত

অন্যান্য উত্তরগুলি সঠিক হলেও এটি পুরানো। পুরানো তারিখ-কালীন ক্লাসগুলি খারাপভাবে নকশাকৃত, বিভ্রান্তিকর এবং সমস্যাযুক্ত হিসাবে প্রমাণিত হয়েছে।

java.time

সেই পুরানো ক্লাসগুলি জাভা.টাইম কাঠামোর দ্বারা পরিবেশন করা হয়েছে ।

এই নতুন ক্লাসগুলি জেএসআর 310 দ্বারা সংজ্ঞায়িত এবং থ্রিটেন-এক্সট্রা প্রকল্প দ্বারা প্রসারিত অত্যন্ত সফল জোডা-টাইম প্রকল্প দ্বারা অনুপ্রাণিত হয়েছে ।

দেখুন ওরাকল টিউটোরিয়াল

Instant

একটি Instantমধ্যে টাইমলাইনে একটি মুহূর্ত ইউটিসি থেকে রেজল্যুশন দিয়ে ন্যানোসেকেন্ড

 Instant instant = Instant.now(); // Current moment in UTC.

সময় অঞ্চল

একটি সময় অঞ্চল প্রয়োগ করুন ( ZoneId) ZonedDateTime। আপনি যদি সময় অঞ্চলটি বাদ দেন তবে আপনার জেভিএমের বর্তমান ডিফল্ট সময় অঞ্চলটি সুস্পষ্টভাবে প্রয়োগ করা হবে। কাঙ্ক্ষিত / প্রত্যাশিত সময় অঞ্চলটি স্পষ্টভাবে নির্দিষ্ট করা ভাল।

ব্যবহার করুন সঠিক সময় অঞ্চল নাম এর বিন্যাসে continent/regionযেমন America/Montreal, Europe/Brusselsঅথবা Asia/Kolkata। কখনও যেমন 3-4 চিঠি বর্ণমালা ব্যবহার ESTবা ISTতারা তন্ন তন্ন আদর্শায়িত কিংবা অনন্য।

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

জাভাতে আধুনিক এবং উত্তরাধিকার উভয়ই তারিখের সময়ের ধরণের সারণী

স্ট্রিং উত্পাদন করছে

আপনি সহজেই Stringতারিখের সময়ের মানের একটি পাঠ্য উপস্থাপনা হিসাবে তৈরি করতে পারেন । আপনি একটি স্ট্যান্ডার্ড ফর্ম্যাট, আপনার নিজস্ব কাস্টম বিন্যাস, বা একটি স্বয়ংক্রিয়ভাবে স্থানীয় ফর্ম্যাট সঙ্গে যেতে পারেন।

আইএসও 8601

toStringসাধারণ এবং বুদ্ধিমান আইএসও 8601 স্ট্যান্ডার্ড ব্যবহার করে আপনি পাঠ্য বিন্যাস করতে পদ্ধতিগুলিকে কল করতে পারেন ।

String output = instant.toString();

2016-03-23T03: 09: 01.613Z

মনে রাখবেন যে এর জন্য ZonedDateTime, toStringপদ্ধতিটি বর্গাকার বন্ধনীতে টাইম জোনের নাম যুক্ত করে আইএসও 8601 মানকে প্রসারিত করে। অত্যন্ত কার্যকর এবং গুরুত্বপূর্ণ তথ্য, তবে মানক নয়।

2016-03-22T20: 09: 01.613-08: 00 [আমেরিকা / Los_Angeles]

কাস্টম বিন্যাস

বা DateTimeFormatterক্লাসের সাথে আপনার নিজস্ব নির্দিষ্ট ফর্ম্যাটিং প্যাটার্ন নির্দিষ্ট করুন ।

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );

একটি নির্দিষ্ট করুন Localeএকটি মানবিক ভাষা (ইংরেজি, জন্য ফরাসি , ইত্যাদি) দিন / মাস নামে অনুবাদ এবং যেমন বছর এবং মাস ও তারিখ ক্রম হিসাবে সাংস্কৃতিক নিয়ম সংজ্ঞা ব্যবহার করতে। নোট করুন যে Localeসময় অঞ্চল সঙ্গে কোন সম্পর্ক নেই।

formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );

স্থানীয় ভাষায় অনুবাদ করা

আরও ভাল, জাভা.টাইম স্বয়ংক্রিয়ভাবে স্থানীয়করণের কাজটি করতে দিন।

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) );  // Or Locale.CANADA_FRENCH and so on.

জাভা.টাইম সম্পর্কে

Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.DateCalendarSimpleDateFormat

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

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

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

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

সারণী তালিকা যা জাভা এবং অ্যান্ড্রয়েডের কোন সংস্করণে ব্যবহার করতে * জাভা.টাইম * প্রযুক্তির প্রয়োগ করে।


2
@ giraffe.guru আমার উত্তরটি আবার পড়ুন। আপনি তৃতীয় বুলেট মিস করেছেন। Java.time কার্যকারিতা অনেক জাভা 6 ও 7 ব্যাক বৈশিষ্ট্যসমূহ নিয়ে আসা হয় ThreeTen-গুলো পুরনো এবং আরও অ্যান্ড্রয়েড অভিযোজিত ThreeTenABP
তুলিল বাউরক

Instant.now()এবং ZonedDateTime.now()প্রয়োজনীয় এপিআই 26
রাইডে

2
@ রাইড যেমন আমি জিরাফ.গুরুকে বলেছিলাম, আমার উত্তরটি পুনরায় পড়ুন। "অ্যান্ড্রয়েড" উল্লেখ করে তৃতীয় বুলেটটি সন্ধান করুন।
তুলিল বাউরক

আমি বিশ্বাস করি যে আপনি ঠিক বলেছেন: আপনার নতুন জাভা.টাইম সংস্করণ টেবিলটি বুলেট তালিকার চেয়ে বার্তাটি সরাসরি এবং সহজেই পৌঁছে দেয়। যদি সেগুলি হয় তবে আমি মনে করি যে আমি বিষয়গুলি আরও খানিকটা জটিল করে ফেলেছি এবং থ্রেটেনব্যাকপোর্ট / জাভা 8+ এর অধীনে এবং থ্রিটেনএবিপি / অ্যান্ড্রয়েড 26+ এর অধীনে বন্ধনীগুলিতে একটি চেক চিহ্ন রেখেছি বা কেবল এই সংযুক্তিগুলি কাজ করে না এগুলি ব্যবহারে সাধারণত কোনও বিন্দু নেই। অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি বিকশিত হচ্ছে যা থ্রিটেনএবিপি ব্যবহার করে এবং 26 স্তরের এবং নীচে উভয়রকম অ্যান্ড্রয়েড এপিআই স্তরে লক্ষ্য করে। আমার কাছে মনে হয় বিকাশকারীরা এই ক্ষেত্রে ভাল চয়ন করেছেন।
ওলে ভিভি

1
@ OleV.V। গ্রাফিক সারণীতে গৌণ চেক চিহ্ন প্রস্তাব দেওয়ার জন্য আপনাকে ধন্যবাদ। আমি এটি টেবিলের পরবর্তী সংস্করণগুলিতে ব্যবহার করছি। অনেক উন্নতি হয়েছে।
তুলসী বাউরক

52

বর্তমান সময়ের জিয়ার জন্য System.currentTimeMillis()আপনি জাভাতে যা মানক তা ব্যবহার করতে পারেন । তারপরে আপনি এটি তৈরি করতে একটি তারিখ তৈরি করতে পারেন

Date currentDate = new Date(System.currentTimeMillis());

এবং সময় তৈরি করার জন্য অন্যরা যেমন উল্লেখ করেছে

Time currentTime = new Time();
currentTime.setToNow();

13
প্রয়োজন নেই System.currentTimeMillis(); কেবল new Date() একই জিনিস করে
জোনিক

Cannot resolve constructor Date()অ্যান্ড্রয়েডে জোনিক , অ্যান্ড্রয়েড এসডিকে জাভা and এবং of এর মিশ্রণ ব্যবহার করেছে
surfer190

1
ধন্যবাদ. Date currentDate = new Date(System.currentTimeMillis());সঠিক
mghhgm

@ এমঘেগম না, new Date(System.currentTimeMillis())ঠিক নয়: (ক) এটি নিরঙ্কুশ , যেমনটি হুবহু একই new Date()। (খ) ঝামেলা java.util.Dateশ্রেণিটি এখন java.time.Instantজাভা ৮ এবং তার পরে হিসাবে সংযোজন করা হয়েছে । জাভা 6 ও 7 ফিরে যান-বৈশিষ্ট্যসমূহ নিয়ে আসা ThreeTen-গুলো পুরনো প্রকল্প, এবং আগের অ্যান্ড্রয়েড (<26) এর ThreeTenABP
বাসিল বাউরক

37

আপনি কোডটি ব্যবহার করতে পারেন:

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

আউটপুট:

2014-11-11 00:47:55

আপনি এখানSimpleDateFormat থেকে আরও কিছু ফর্ম্যাটিং বিকল্পগুলি পান ।


অবগতির জন্য, যেমন বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 এবং পরে পাতাটা ক্লাস। ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
তুলিল বাউরক

32

সহজ, আপনি বর্তমান সময়ের জন্য পৃথক মান পেতে সময়কে বিচ্ছিন্ন করতে পারেন, নিম্নরূপ:

Calendar cal = Calendar.getInstance(); 

  int millisecond = cal.get(Calendar.MILLISECOND);
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
        //12 hour format
  int hour = cal.get(Calendar.HOUR);
        //24 hour format
  int hourofday = cal.get(Calendar.HOUR_OF_DAY);

একইভাবে তারিখের জন্য যায়:

Calendar cal = Calendar.getInstance(); 

  int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
  int year = cal.get(Calendar.YEAR);
  int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
  int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);

পরবর্তী 5-10 দিনের জন্য কীভাবে তারিখ পাবেন? এটি এখানে ম্যানুয়াল গণনা?
CoDe

@ কোড আপনি তার জন্য তারিখটি ব্যবহার করুন
করুনউইটস্ল্যাসম এখন

27

অ্যান্ড্রয়েড প্রধানত জাভা হওয়ায় বেশ কয়েকটি বিকল্প রয়েছে তবে আপনি যদি এটি কোনও পাঠ্য ভিউতে লিখতে চান তবে নীচের কোডটি কৌশলটি করতে পারে:

String currentDateTimeString = DateFormat.getDateInstance().format(new Date());

// textView is the TextView view that should display it
textView.setText(currentDateTimeString);

8
আপনার ব্যবহার করা উচিত Calendarবা GregorianCalendarDateবর্গ অসমর্থিত হয়েছে।
জোসেফ আর্ল

ধন্যবাদ সাথী :) এ সম্পর্কে আমার কোনও ধারণা ছিল না
dLobatog

12
তারিখ () রেফারেন্স ডকুমেন্টেশন অনুসারে ( developer.android.com/references/java/util/Date.html ) তারিখ () শ্রেণিকে অবচয় বলে উল্লেখ করার মতো কিছুই নেই - তবে বেশ কয়েকটি পদ্ধতি এবং কনস্ট্রাক্টর অবচিত করা হয়েছে।
জ্যাক শেঠ

2
এটি বর্তমান ব্যবহারকারীর সেটিংস (উদাহরণস্বরূপ, 12/24 সময় বিন্যাস) অর্থে ভুল ফলাফল আনবে। বর্তমান ব্যবহারকারী সেটিংসের জন্য ডেটফরম্যাট পেতে অ্যান্ড্রয়েড.টেক্সট.ফর্ম্যাট.ডেট ফরমেট.সেটটাইম ফর্ম্যাট (প্রসঙ্গে প্রসঙ্গ) ব্যবহার করুন।
আশ্চর্য.মিস

@ জ্যাক আপনি ঠিক ততক্ষণে পান তারিখের সময় পদ্ধতিটি আরও বেশি ব্যবহারের জন্য ব্যবহার করুন

24
SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");


String currentDateandTime = databaseDateTimeFormate.format(new Date());     //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date());     //2009-06-30
String currentDateandTime = sdf1.format(new Date());     //30.06.09
String currentDateandTime = sdf2.format(new Date());     //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date());     //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date());     //8:29 PM
String currentDateandTime = sdf5.format(new Date());     //8:29
String currentDateandTime = sdf6.format(new Date());     //8:28:36:249
String currentDateandTime = sdf7.format(new Date());     //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date());     //2009.June.30 AD 08:29 AM

তারিখ বিন্যাস প্যাটার্নস

G   Era designator (before christ, after christ)
y   Year (e.g. 12 or 2012). Use either yy or yyyy.
M   Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d   Day in month. Number of d's determine length of format (e.g. d or dd)
h   Hour of day, 1-12 (AM / PM) (normally hh)
H   Hour of day, 0-23 (normally HH)
m   Minute in hour, 0-59 (normally mm)
s   Second in minute, 0-59 (normally ss)
S   Millisecond in second, 0-999 (normally SSS)
E   Day in week (e.g Monday, Tuesday etc.)
D   Day in year (1-366)
F   Day of week in month (e.g. 1st Thursday of December)
w   Week in year (1-53)
W   Week in month (0-5)
a   AM / PM marker
k   Hour in day (1-24, unlike HH's 0-23)
K   Hour in day, AM / PM (0-11)
z   Time Zone

1
যদিও অন্যান্য উত্তরগুলিও সঠিক। আমি এই উত্তরটি পছন্দ করেছি কারণ এটি সম্পর্কিত সময় সম্পর্কিত সমস্যাগুলিকেও সহায়তা করে। ধন্যবাদ @ বিঘ্নেশ কেএম
অঙ্কিত গুপ্ত


15

এটি একটি পদ্ধতি যা তারিখ এবং সময় পেতে কার্যকর হবে:

private String getDate(){
    DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
    String date=dfDate.format(Calendar.getInstance().getTime());
    DateFormat dfTime = new SimpleDateFormat("HH:mm");
    String time = dfTime.format(Calendar.getInstance().getTime());
    return date + " " + time;
}

আপনি এই পদ্ধতিটি কল করতে এবং বর্তমান তারিখ এবং সময় মান পেতে পারেন:

2017/01//09 19:23

আমি উপস্থাপনা যুক্তি এবং প্রক্রিয়া যুক্তি আঁটসাঁট মিলন পছন্দ করি না; আমি এমন একটি পদ্ধতি পছন্দ করবো যা কেবল বিন্যাস করে এবং একটি তারিখ ইনপুট প্যারাম নেয়। আপনি কেন 2 SimpleDateFormatটি এবং 2 Dateটি ব্যবহার করছেন তাও আমি বুঝতে পারি না ... আপনি কেবল "yyyy/MM/dd HH:mm"একবার বিন্যাস এবং কল ক্যালেন্ডার হিসাবে একবার ব্যবহার করতে পারবেন না ?
অজাহানচর্লেস

12
Time time = new Time();
time.setToNow();
System.out.println("time: " + time.hour+":"+time.minute);

এটি আপনাকে দেবে, উদাহরণস্বরূপ, 12:32।

Android.text.format.Time আমদানি মনে রাখবেন;


12
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println("time => " + dateFormat.format(cal.getTime()));

    String time_str = dateFormat.format(cal.getTime());

    String[] s = time_str.split(" ");

    for (int i = 0; i < s.length; i++) {
         System.out.println("date  => " + s[i]);
    }

    int year_sys = Integer.parseInt(s[0].split("/")[0]);
    int month_sys = Integer.parseInt(s[0].split("/")[1]);
    int day_sys = Integer.parseInt(s[0].split("/")[2]);

    int hour_sys = Integer.parseInt(s[1].split(":")[0]);
    int min_sys = Integer.parseInt(s[1].split(":")[1]);

    System.out.println("year_sys  => " + year_sys);
    System.out.println("month_sys  => " + month_sys);
    System.out.println("day_sys  => " + day_sys);

    System.out.println("hour_sys  => " + hour_sys);
    System.out.println("min_sys  => " + min_sys);

12

ফর্ম্যাট সহ বর্তমান তারিখ এবং সময়ের জন্য, ব্যবহার করুন

জাভাতে

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Log.d("Date","DATE : " + strDate)

কোটলিনে

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
    var myDate: String =  current.format(formatter)
    Log.d("Date","DATE : " + myDate)
} else {
    var date = Date()
    val formatter = SimpleDateFormat("MMM dd yyyy HH:mma")
    val myDate: String = formatter.format(date)
    Log.d("Date","DATE : " + myDate)
}

তারিখের বিন্যাস পদ্ধতি

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

সহ অবদান চাওয়ার জন্য ধন্যবাদ। আপনি কি এমন কিছু অবদান রাখছেন যা ইতিমধ্যে পূর্ববর্তী ৩ 36 টি উত্তরের মধ্যে নেই? যে কোনও ক্ষেত্রে আপনি এখনও কুখ্যাত ঝামেলা এবং দীর্ঘকালীন SimpleDateFormatবর্গ শ্রেণীর ব্যবহার করছেন। ওরিওর আগেও আপনার প্রয়োজন পড়ার দরকার নেই, আপনি পরিবর্তে থ্রিটিএনএবিপি , জাভা.টাইমের ব্যাকপোর্ট, আধুনিক জাভা তারিখ এবং সময় এপিআই ব্যবহার করতে পারেন।
ওলে ভিভি

11

আপনি android.os.SistmClock ব্যবহার করতে পারেন। উদাহরণস্বরূপ, সিস্টেমক্লক.এলপসড রিলটাইম () ফোনটি ঘুমন্ত অবস্থায় আপনাকে আরও সঠিক সময় রিডিং দেবে।


10

আপনার যদি প্রয়োজন হয় বর্তমান তারিখ:

Calendar cc = Calendar.getInstance();
int year = cc.get(Calendar.YEAR);
int month = cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year + ":" + month + ":" + mDay);

আপনার যদি বর্তমান সময়ের প্রয়োজন হয়:

 int mHour = cc.get(Calendar.HOUR_OF_DAY);
 int mMinute = cc.get(Calendar.MINUTE);
 System.out.println("time_format" + String.format("%02d:%02d", mHour , mMinute));

9

একটি কাস্টমাইজড সময় এবং তারিখ বিন্যাসের জন্য:

    SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
    String cDateTime=dateFormat.format(new Date());

আউটপুট নীচের বিন্যাসের মতো: 2015-06-18T10: 15: 56-05: 00




8

আপনি ব্যবহার করে তারিখটি পেতে পারেন:

Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");

এটি আপনাকে একটি দুর্দান্ত ফর্মের ফলাফল দেবে, যেমন এই উদাহরণ হিসাবে: "2014/02/09"।


প্যারামিটারলেস কনস্ট্রাক্টর Time t = new Time();ডিফল্ট সময় অঞ্চল ব্যবহার করবে। আমার অভিজ্ঞতায় ডিফল্ট == বর্তমান।
উইলিয়াম টি। ম্যালার্ড

7

ওয়েল আমার এপিআই-র কিছু উত্তর নিয়ে সমস্যা ছিল তাই আমি এই কোডটি ফিউজ করলাম, আমি আশা করি এটি তাদের ছেলেমেয়েদের পরিবেশন করে:

    Time t = new Time(Time.getCurrentTimezone());
    t.setToNow();
    String date1 = t.format("%Y/%m/%d");

    Date date = new Date(System.currentTimeMillis());
    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa",
            Locale.ENGLISH);
    String var = dateFormat.format(date);
    String horafecha = var+ " - " + date1;

    tvTime.setText(horafecha);

আউটপুট: 03:25 পূর্বাহ্ণ - 2017/10/03


7

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

 DateFormat df = new SimpleDateFormat("HH:mm"); // Format time
 String time = df.format(Calendar.getInstance().getTime());

 DateFormat df1 = new SimpleDateFormat("yyyy/MM/dd"); // Format date
 String date = df1.format(Calendar.getInstance().getTime());

6

এটা চেষ্টা কর

String mytime = (DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date()).toString());

এটি নিখুঁত এক লাইনার এবং মার্জিত সমাধান। অন্যান্য উত্তরের মতো অযথা দীর্ঘ সমাধানের জন্য এটি প্রয়োজনীয় নয়।
zeeshan

5

নীচে পদ্ধতির স্ট্রিংয়ে বর্তমান তারিখ এবং সময় ফিরে আসবে, আপনার প্রকৃত সময় অঞ্চল অনুযায়ী আলাদা সময় অঞ্চল ব্যবহার করুন GM আমি GMT ব্যবহার করেছি

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(presentTime_Date);
}

4

নতুন এপিআই অনুসারে আপনার ক্যালেন্ডার ক্লাস ব্যবহার করা উচিত। তারিখ শ্রেণি এখন অবচয় করা হয়।

Calendar cal = Calendar.getInstance();

String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);

String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);

4

নীচের কোডটি ব্যবহার করার চেষ্টা করুন:

 Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.