উত্তর:
int year = Calendar.getInstance().get(Calendar.YEAR);
নিশ্চিত না যে এটি একটি নতুন ক্যালেন্ডার স্থাপন না করার মানদণ্ডের সাথে মিলিত হয়েছে? (বিরোধী দল কেন এমন করছে?)
Calendar.getInstance().get(Calendar.YEAR)
ঘড়িটি বাহ্যিকভাবে পরিবর্তিত হওয়ার ক্ষেত্রে পারমাণবিক এবং synchronized(c)
স্থানীয় ভেরিয়েবলের নতুন উদাহরণটি করা এখানে কোনওভাবেই অর্থহীন হতে পারে।
import java.util.Calendar
জাভা 8 এর টাইম এপিআই ব্যবহার করে (ধরে নিচ্ছেন যে আপনি আপনার সিস্টেমে ডিফল্ট টাইম জোনে বছরটি পেয়ে আনন্দিত), আপনি এই Year::now
পদ্ধতিটি ব্যবহার করতে পারেন :
int year = Year.now().getValue();
ZoneId
যুক্তিটি now
JVM- র বর্তমান ডিফল্ট জোনে (যা রানটাইমের সময় যে কোনও মুহুর্তে পরিবর্তিত হতে পারে!) উপর সম্পূর্ণরূপে নির্ভর করার পরিবর্তে to চ্ছিক যুক্তিটি পাস করার পরামর্শ দিচ্ছি ।
int year = Year.now(ZoneId.of("America/New_York")).getValue();
বিটিডাব্লু
এই সরলতম (ক্যালেন্ডার ব্যবহার করে, দুঃখিত) হ'ল:
int year = Calendar.getInstance().get(Calendar.YEAR);
এছাড়াও রয়েছে নতুন তারিখ এবং সময় এপিআই জেএসআর , পাশাপাশি জোদা টাইম
সবচেয়ে সহজ উপায় হল বছরটি ক্যালেন্ডার থেকে পাওয়া।
// year is stored as a static member
int year = Calendar.getInstance().get(Calendar.YEAR);
আপনি java.time.YearMonth
(জাভা 8) থেকে 2 টি পদ্ধতিও ব্যবহার করতে পারেন :
import java.time.YearMonth;
...
int year = YearMonth.now().getYear();
int month = YearMonth.now().getMonthValue();
আপনি যদি কোনও তারিখের অবজেক্টের বছর চান তবে আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি:
public static int getYearFromDate(Date date) {
int result = -1;
if (date != null) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
result = cal.get(Calendar.YEAR);
}
return result;
}
ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) )
.getYear()
উত্তর দ্বারা Raffi Khatchadourian বিজ্ঞতার সঙ্গে শো নতুন কীভাবে ব্যবহার করবেন তা java.time প্যাকেজ জাভা 8. কিন্তু উত্তর যে একটি তারিখ নির্ধারণে সময় জোন জটিল সমস্যা মোকাবেলার ব্যর্থ।
int বছর = লোকালডেট.নো ()। getYear ();
এই কোডটি জেভিএমের বর্তমান ডিফল্ট টাইম জোনের উপর নির্ভর করে। ডিফল্ট অঞ্চলটি আজকের তারিখটি নির্ধারণে ব্যবহৃত হয়। উদাহরণস্বরূপ, মনে রাখবেন যে প্যারিসের মধ্যরাতের পরে মুহুর্তে মন্ট্রিয়ালে তারিখটি এখনও 'গতকাল'।
সুতরাং আপনার ফলাফলগুলি কোন মেশিনটিতে চালিত হয়, কোনও ব্যবহারকারী / অ্যাডমিন হোস্ট ওএস টাইম অঞ্চল পরিবর্তন করে, বা যে কোনও মুহুর্তে জাভা কোডটি জেভিএমের বর্তমান ডিফল্ট পরিবর্তন করে পরিবর্তিত হতে পারে। সময় অঞ্চল নির্দিষ্ট করা ভাল।
উপায় দ্বারা, সবসময় ব্যবহার সঠিক সময় অঞ্চল নাম হিসাবে IANA দ্বারা সংজ্ঞায়িত । কখনও কখনও 3-4 বর্ণচিহ্নগুলি ব্যবহার করবেন না যা মানক বা অনন্য নয়।
জাভা 8 এর জাভা.টাইমে উদাহরণ।
int year = ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) ).getYear() ;
উপরের মতো কিছু ধারণা, তবে জোদা-সময় ২.7 গ্রন্থাগারটি ব্যবহার করা হচ্ছে ।
int year = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).getYear() ;
যদি আপনার লক্ষ্যটি একবারে এক বছরে লাফিয়ে যায় তবে বছরের সংখ্যাটি বের করার দরকার নেই। জোদা-সময় এবং জাভা.টাইম উভয়েরই এক সাথে এক বছরে যোগ / বিয়োগের পদ্ধতি রয়েছে। এবং এই পদ্ধতিগুলি স্মার্ট, দিবালোক সংরক্ষণের সময় এবং অন্যান্য অসঙ্গতিগুলি পরিচালনা করে।
জোদা-সময় 2.7 উদাহরণ।
DateTime oneYearAgo = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).minusYears( 1 ) ;
tzdata
ডেটা ফাইলের একটি নতুন কপি নিজেই ডাউনলোড করুন। আপনি ফাইলটি অনুধাবন করতে পারেন। এবং আপনি আপনার জাভা প্রয়োগে একটি পুরানো tzdata প্রতিস্থাপন করতে পারেন। ওরাকল তাদের জেভিএমের জন্য একটি আপডেটের সরঞ্জাম সরবরাহ করে।
আপনি জাভা 8 এর ব্যবহার করতে পারেন LocalDate
:
import java.time.LocalDate;
//...
int year = LocalDate.now().getYear();
কিছু লোক উপরে উত্তর হিসাবে:
আপনি যদি ভেরিয়েবলটি পরে ব্যবহার করতে চান তবে আরও ভাল ব্যবহার করুন:
int year;
year = Calendar.getInstance().get(Calendar.YEAR);
আপনার যদি কেবলমাত্র একটি শর্তের জন্য বছরের প্রয়োজন তবে আপনি আরও ভাল ব্যবহার করুন:
Calendar.getInstance().get(Calendar.YEAR)
উদাহরণস্বরূপ এটি একটি করণীয় ব্যবহারের সময় ব্যবহার করা হয়েছে যে প্রবর্তন করা চেকগুলি বর্তমান বছর -200 বা বর্তমান বছরের তুলনায় কম নয় (জন্মের বছর হতে পারে):
import java.util.Calendar;
import java.util.Scanner;
public static void main (String[] args){
Scanner scannernumber = new Scanner(System.in);
int year;
/*Checks that the year is not higher than the current year, and not less than the current year - 200 years.*/
do{
System.out.print("Year (Between "+((Calendar.getInstance().get(Calendar.YEAR))-200)+" and "+Calendar.getInstance().get(Calendar.YEAR)+") : ");
year = scannernumber.nextInt();
}while(year < ((Calendar.getInstance().get(Calendar.YEAR))-200) || year > Calendar.getInstance().get(Calendar.YEAR));
}
আমার ক্ষেত্রে উপরের কোনওটিই কাজ করে না। সুতরাং অনেকগুলি সমাধানের চেষ্টা করার পরে আমি একটির নীচে পেয়েছি এবং এটি আমার জন্য কাজ করেছে
import java.util.Scanner;
import java.util.Date;
public class Practice
{
public static void main(String[] args)
{
Date d=new Date();
int year=d.getYear();
int currentYear=year+1900;
System.out.println(currentYear);
}
}
জাভা সংস্করণে 8+ জাভা.টাইম লাইব্রেরি ব্যবহার করতে (পরামর্শ দেওয়া) করতে পারে । আইএসও 8601 তারিখগুলি লেখার মানক উপায় সেট করে: YYYY-MM-DD
এবং java.time.Instant
এটি ব্যবহার করে, সুতরাং (এর জন্য UTC
):
import java.time.Instant;
int myYear = Integer.parseInt(Instant.now().toString().substring(0,4));
দ্রষ্টব্য ধরো যদি (এবং পাবার জন্য shorted মধ্যে String
না int
), ব্যবহার Calendar
সৌন্দর্য ভাল এবং জোন-সচেতন করা যেতে পারে।
আপনি কোনও ক্যালেন্ডার ইনস্ট্যান্ট করার দরকার ছাড়াই পূর্ণসংখ্যার গণিত ব্যবহার করে পুরো কাজটি করতে পারেন:
return (System.currentTimeMillis()/1000/3600/24/365.25 +1970);
নতুন বছরে এক ঘন্টা বা দু'বারের জন্য বন্ধ থাকতে পারে তবে আমি কী ইস্যুটি মনে করি না?
দিন / মাস / বছরের ইনট নিয়ে কাজ করার জন্য আমি আমার লাইব্রেরিতে বিশেষ ফাংশন ব্যবহার করি -
int[] int_dmy( long timestamp ) // remember month is [0..11] !!!
{
Calendar cal = new GregorianCalendar(); cal.setTimeInMillis( timestamp );
return new int[] {
cal.get( Calendar.DATE ), cal.get( Calendar.MONTH ), cal.get( Calendar.YEAR )
};
};
int[] int_dmy( Date d ) {
...
}
java.util.Date
হয় না , জাভা ৮-এর মতো নয় Some এর কয়েকটি পদ্ধতি হ্রাস করা হয়েছে তবে পুরো শ্রেণি নয়। তবে আপনার উভয়কে এড়ানো উচিতjava.util.Date
এবংjava.util.Calendar
কারণ এগুলি কুখ্যাত সমস্যা, বিভ্রান্তিকর এবং ত্রুটিযুক্ত। পরিবর্তে হয় জাভা.টাইম (জাভা 8 এ) বা জোদা-সময় ব্যবহার করুন ।