জাভা: getMinutes এবং getHours


142

আপনি ঘন্টা এবং মিনিট পেতে পারি যেহেতু Date.getHoursএবং Date.getMinutesঅবচিত হয়? গুগল অনুসন্ধানে আমি যে উদাহরণগুলি পেয়েছি সেগুলি অবহেলা পদ্ধতি ব্যবহার করে।


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

উত্তর:


171

স্ট্যান্ডার্ড java.util.Date ক্লাসের পরিবর্তে জোডা টাইম ব্যবহার করার চেষ্টা করুন । জোডা টাইম লাইব্রেরিতে তারিখগুলি পরিচালনা করার জন্য আরও ভাল API রয়েছে।

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

জোদা টাইম লাইব্রেরিটি ব্যবহারের পক্ষে এবং বিবেকের জন্য এই প্রশ্নটি দেখুন ।

জোদা সময়টিকে জাভাটির কিছু ভবিষ্যতের সংস্করণকে স্ট্যান্ডার্ড উপাদান হিসাবে অন্তর্ভুক্ত করা যেতে পারে, জেএসআর -310 দেখুন


আপনার যদি অবশ্যই traditionalতিহ্যবাহী java.util.Date এবং java.util.Cocolate ক্লাস ব্যবহার করা থাকে তবে তাদের জাভাডোক সাহায্যের জন্য দেখুন ( java.util.Clavender এবং java.util.Date )।

আপনি প্রদত্ত তারিখের উদাহরণ থেকে ক্ষেত্রগুলি আনতে এই জাতীয় traditionalতিহ্যগত ক্লাসগুলি ব্যবহার করতে পারেন।

Date date = new Date();   // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!

2
প্রশ্ন: এখন যে জাভা 8 লোকালডেটটাইমটি নিয়ে রোলআউট হয়েছে, লোকালডেটটাইমের উপর জোদা টাইম ব্যবহার করার কোনও কারণ আছে কি?
ক্রিপস

@ ক্রাইপস মতামত পৃথক জোডা-টাইম সরকারীভাবে জাভা.টাইম ব্যবহারের পরিবর্তে প্রস্তাব দেয়।
ওলে ভিভি

96

জাভাদোক থেকে তারিখের জন্য

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

সুতরাং ব্যবহার

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

এবং getMinutes এর সমতুল্য।


6
সুতরাং ... আমি যদি এখনকার সাথে মেলে না এমন কোনও তারিখ থেকে ঘন্টা পেতে চাই তবে কীভাবে এই কাজ করবে?
মাইকেল


এই ভয়ঙ্কর শ্রেণিটি জেএসআর 310 গ্রহণের সাথে আধুনিক জাভা.টাইম ক্লাসগুলি দ্বারা বহু বছর পূর্বে দমন করা হয়েছিল insteadZonedDateTime পরিবর্তে ব্যবহার করুন।
বেসিল Bourque

58

java.time

আমি জোদা-সময়ের অনুরাগী থাকা অবস্থায় , জাভা 8 জাভা.টাইম প্যাকেজটি উপস্থাপন করে যা অবশেষে একটি উপযুক্ত জাভা স্ট্যান্ডার্ড সমাধান! এই নিবন্ধটি পড়ুন, জাভা এসই 8 তারিখ এবং সময় , জাভা.টাইম উপর ঘন্টা এবং মিনিটের বাইরে প্রচুর পরিমাণে তথ্যের জন্য।

বিশেষত, LocalDateTimeক্লাসটি দেখুন।

ঘন্টা এবং মিনিট:

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();

4
এটি সেরা উত্তর। আপনি পাঠক এবং নিজেকে এই একটি সময় অঞ্চল সংবেদনশীল অপারেশন মনে করিয়ে দিতে স্পষ্ট সময় অঞ্চল প্রদান করতে চান করতে পারেন: LocalDateTime.now(ZoneId.of("Asia/Manilla"))now()ধারাবাহিকতার জন্য কেবল একবার পড়ুন (দুটি কলের মধ্যে সময় কেটে যাবে)। তারিখটি যদি সত্যিই অপ্রাসঙ্গিক হয় তবে LocalTimeখুব কার্যকর হয়।
ওলে ভিভি

1
এই জন্য আপনাকে ধন্যবাদ. আমি দীর্ঘমেয়াদে ক্লাসে নির্মিত এই দুর্দান্ত নির্মিতটি কোনওভাবেই মিস করেছি!
চিপস

ওলে ভিভি দ্বারা মন্তব্য সঠিক। তবে আরও ভাল, ZonedDateTimeবরং ক্লাস ব্যবহার করুন LocalDateTime। সঙ্গে LocalDateTimeআপনি কোন কারণে মূল্যবান সময় জোন তথ্য খারিজ করা হয়, কিছুই অর্জন করে।
তুলসী বাউরকে

আপনার যদি পিছনের দিকে সামঞ্জস্যপূর্ণ হতে না হয় তবে দরকারী। আপনি অ্যান্ড্রয়েডের জন্য লিখছেন এবং পুরানো এপিআই সংস্করণগুলি সমর্থন করছেন (বা জাভা 8 সর্বদা উপলব্ধ না থাকায় অন্য কোনও ক্ষেত্রে) আফসোস করে উপযুক্ত নয়।
এম_এম

@ এম_এম জাভা 6 এবং 7 এর জন্য, জাভা.টাইম কার্যকারিতা সর্বাধিক থ্রিটেন-ব্যাকপোর্ট লাইব্রেরিতে ব্যাক-পোর্ট করা হয় । আরও থ্রিটিনাএবিপিতে প্রারম্ভিক অ্যান্ড্রয়েডের সাথে অভিযোজিত । লিঙ্কগুলির জন্য, আমার উত্তরের শেষ বিভাগটি দেখুন ।
তুলসী বাউরকে

36

প্রথমে java.util.Clavender আমদানি করুন

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));

12

TL; ড

ZonedDateTime.now().getHour()

… বা…

LocalTime.now().getHour() 

ZonedDateTime

জেডি দ্বারা উত্তর ভাল কিন্তু অনুকূল নয়। উত্তরটি LocalDateTimeক্লাস ব্যবহার করে । টাইম জোন বা অফসেট-ইউটিসি -র কোনও ধারণার অভাব, সেই শ্রেণি একটি মুহুর্তের প্রতিনিধিত্ব করতে পারে না।

ব্যবহার করা ভাল ZonedDateTime

ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

সময় অঞ্চল নির্দিষ্ট করুন

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

আমার স্নাতকের:

ZonedDateTime.now()

… এর মতোই:

ZonedDateTime.now( ZoneId.systemDefault() )

আপনার কাঙ্ক্ষিত / প্রত্যাশিত সময় অঞ্চলটি পাস করে সুস্পষ্ট হওয়া আরও ভাল। ডিফল্ট রানটাইমের সময় যে কোনও মুহুর্তে পরিবর্তন করতে পারে ।

যদি সমালোচনা হয় তবে ব্যবহারকারীর সাথে সময় অঞ্চলটি নিশ্চিত করুন।

কেয়ামত মিনিটের

ZonedDateTimeঘন্টা এবং মিনিটের জন্য জিজ্ঞাসা করুন ।

int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;

LocalTime

আপনি যদি সময় অঞ্চল ব্যতীত দিনের সময়সীমা চান তবে এক্সট্রাক্ট করুন LocalTime

LocalTime lt = zdt.toLocalTime() ;

বা ZonedDateTimeসরাসরি এড়ানো, সরাসরি যেতে LocalTime

LocalTime lt = LocalTime.now( z ) ;  // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).

java.time প্রকার

আধুনিক জাভা.টাইম বনাম উত্তরাধিকারে তারিখ-কালীন ধরণের ধরণের সারণী।


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

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

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

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

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

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

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


6

ক্যালেন্ডার চেষ্টা করুন। ক্যালেন্ডার-অবজেক্ট পেতে getInstance ব্যবহার করুন। তারপরে প্রয়োজনীয় তারিখ সেট করতে সেটটাইম ব্যবহার করুন। আপনার প্রয়োজনীয় মানগুলি পড়তে এখন আপনি যথাযথ ধ্রুবক সহ HOUR_OF_DAY বা তার সাথে get (int ফিল্ড) ব্যবহার করতে পারেন।

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


3
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();

এই ফাংশনগুলি ঘন্টা এবং মিনিটের মধ্যে অন্তর্গত মানগুলি ফিরিয়ে দেবে।


1
প্রতিলিপি. এই পদ্ধতির জেডি উত্তর দ্বারা ইতিমধ্যে আচ্ছাদিত ছিল ।
বাসিল বাউরক

তা কি java.sql.Time? নিশ্চয়ই কোনও কারণ নেই যে আপনি যখন পেয়ে গেছেন সেই পুরানো শ্রেণিকে খেলতে আনতে java.time.LocalTime। আপনি অত্যধিক জটিল।
ওলে ভিভি

দেখে মনে হচ্ছে getMinutes()Calendar.get(Calendar.MINUTE)
এটিকে অবনমিত

3

মিনিট এবং ঘন্টা পাওয়ার আরও একটি উপায় হ'ল সিম্পলডেট ফরমেট ব্যবহার করে।

SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())

SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())

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

2

আমি বিজ্ঞাপন জোডা সময় দেখার পরামর্শ দিচ্ছি। http://www.joda.org/joda-time/

আমি আমার ঘন প্রকল্পে অন্য একটি গ্রন্থাগার যুক্ত করতে ভয় পেয়েছিলাম, তবে এটি কেবল সহজ এবং দ্রুত এবং স্মার্ট এবং দুর্দান্ত। এছাড়াও এটি বিদ্যমান কোডের সাথে কিছুটা হলেও দুর্দান্ত খেলে।


1

যদিও আমি এটি করার পরামর্শ দিচ্ছি না, আমি মনে করি এটি উল্লেখ করা মূল্যবান যে জাভা.ইটি.এল.ডেটের অনেকগুলি পদ্ধতি অবহেলা করা হলেও তারা এখনও কাজ করে। তুচ্ছ পরিস্থিতিতে, এগুলি ব্যবহার করা ঠিক হবে। এছাড়াও, java.util.C ক্যালেন্ডারটি বেশ ধীর গতির, তাই getMonth এবং getear এয়ারটি কার্যকরভাবে দ্রুত হতে পারে।


1
public static LocalTime time() {
    LocalTime ldt = java.time.LocalTime.now();

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES);
    System.out.println(ldt);
    return ldt;
}

এটি আমার পক্ষে কাজ করে


0

import java.util.*আপনি ক্যালেন্ডার এবং ফর্ম্যাটার ক্লাস ব্যবহার করে গেথর এবং মিনিট করতে পারেন। Calendar cal = Calendar.getInstance()এবং Formatter fmt=new Formatter()ডিসপ্লে ঘন্টা এবং মিনিট fmt.format("%tl:%M",cal,cal)এবং প্রিন্ট System.out.println(fmt) আউটপুট শোয়ের জন্য একটি ফর্ম্যাট সেট করে10:12

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