java date issue in getting month and year
java date issue in getting month and year
i am getting problem from extracting month and year from data object.
String strdate = "2012-11-07T13:28:23"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // Date date = dateFormat.parse(strdate); Date date = new Date(); System.out.println(date.getDate()); System.out.println(date.getYear()); System.out.println(date.getMonth()); System.out.println(date);
my output is like
28 112 10 Wed Nov 28 15:37:30 IST 2012
what is wrong here ?
Answer by mbelow for java date issue in getting month and year
Nothing is wrong. date.getMonth() is zero-based (january = 0)
Answer by Jon Skeet for java date issue in getting month and year
what is wrong here ?
Your compiler should be telling you what's wrong via warnings: you're using deprecated methods on Date
, to start with. Don't ignore those warnings.
You should be using Calendar
to get day/month/year etc values, as a Calendar
has an associated calendar system and time zone, both of which are required in order to get sensible values out.
Next there's the problem that you're just getting the current date and time instead of using strdate
and dateFormat
:
// Date date = dateFormat.parse(strdate); Date date = new Date();
new Date()
always returns the current date/time as reported by the system.
However, if you're confused by the 112 and the 10, you should read the documentation for the methods you're calling, which explains that getYear()
returns a year based on 1900 (so a return value of 112 means the year is 2012), and getMonth()
returns a 0-based month (so January=0). Always read the documentation for methods you're calling, especially if you think they're giving you odd results.
Ideally, however, you should use Joda Time instead - it's a far more sensible date/time API than the built-in one.
Answer by SJuan76 for java date issue in getting month and year
The Year
is based in 1900
, so you get 1900 + 112
or 2012 as we call it.
The Month
is 0-based (January is the 0-month), so you need to add 1.
Anyway, better use a GregorianCalendar
built upon that date to retrieve that info (and many more), since those Date
methods are deprecated.
myGregorianCalendar.get(GregorianCalendar.MONTH);
Answer by Dan for java date issue in getting month and year
When you say new Date()
, it will create a new Date
object holding the current date and time. You are calling methods on the date
value that you have just instantiated.
Answer by Massimiliano Peluso for java date issue in getting month and year
use calendar object instead
Calendar cal = Calendar.getInstance(); cal.setTime(date); int month = cal.get(Calendar.MONTH); int year=cal.get(Calendar.YEAR);
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html
Answer by Amir Qayyum Khan for java date issue in getting month and year
Fllow this code and you will get exact month,year and date from:
String strdate = "2012-11-07T13:28:23"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date date = dateFormat.parse(strdate.toString()); Calendar cal = Calendar.getInstance(); cal.setTime(date); System.out.println("month = " + (cal.get(Calendar.MONTH) + 1 ));// add 1 because Month starts from 0 in java System.out.println("year = " + cal.get(Calendar.YEAR)) ; System.out.println("date = " + cal.get(Calendar.DATE)); System.out.println(date);
my output is like
month = 11 year = 2012 date = 7 Wed Nov 07 13:28:23 PKT 2012
Answer by Basil Bourque for java date issue in getting month and year
The other Answers are correct especially the Answer by Jon Skeet.
Let me add that you are using troublesome old legacy date-time classes. Avoid them.
java.time
The java.time framework is built into Java 8 and later. These classes supplant the old troublesome date-time classes such as java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
.
The Joda-Time project, now in maintenance mode, advises migration to java.time.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations.
Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport and further adapted to Android in ThreeTenABP.
The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time.
Parsing string
Your input string lacks any info about offset-from-UTC or time zone. So we parse it as a LocalDateTime
where the ?Local? means any locality, not one particular. As such it represents a rough idea about possible moments but is not an actual point on the timeline.
ISO 8601
The format of the String complies with the ISO 8601 standard. The java.time classes use these standard formats by default when parsing and generating String objects. So no need to define a parsing pattern.
String input = "2012-11-07T13:28:23"; LocalDateTime ldt = LocalDateTime.parse( input );
Get year & month
The resulting object has better methods for the parts you want plus much more.
Getting the year renders an actual year unlike the trouble you had with the old class. For the year 2016, you get 2016
.
int year = ldt.getYear(); // 2016
For month, the getter gives you an object from the handy Month
enum. Use such objects in your code base rather than a mere integer to benefit from type-safety, guaranteed valid values, and more self-documenting code.
Month month = ldt.getMonth();
But if you must, you can ask for a number, 1-12 (not the crazy 0-11 you saw in the old class).
int monthNumber = month.getValue();
Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72
0 comments:
Post a Comment