Java Puzzle : String concatenation
I have simple program to print date after month from now. 1: package com.test;
2:
3: import java.text.ParseException;
4: import java.text.SimpleDateFormat;
5: import java.util.Date;
6:
7: public class Test{
8: public static void main(String[]args) throws ParseException{
9: Date currentDate = new Date();
10: int d = currentDate.getDate();
11: int month = currentDate.getMonth()+1;
12: int year = currentDate.getYear() +1900;
13: //trying to update to next moth same date
14: Date nextMonthDate = new SimpleDateFormat("dd-MM-yyyy")
15: .parse(d + "-"
16: + month+1 + "-" // increasing month by one to get next month
17: + year);
18: System.out.println("Current Date = "+ currentDate);
19: System.out.println("Next Month Date = "+nextMonthDate);
20: }
21: }
output for this problem is
1: Current Date = Fri Apr 22 03:59:56 IST 2011
2: Next Month Date = Thu May 22 00:00:00 IST 2014
One thing needs to notices here , month is as expected increased by one but year increased by 3 years .
Did you find anything fishy ……….?
Why are you adding 1900 to year?
ReplyDeleteint year = currentDate.getYear() +1900;
currentDate.getYear() gets count of years after 1900, thats why i am adding 1900.
ReplyDeleteTry same code runnung :)
Line 16 does string concatenation because there is a string prior to that addition.
ReplyDeleteInstead of 3 + 1 it becomes 31.
I run the same code but get Different output like this..!!
ReplyDeleteCurrent Date = Sun Sep 09 21:43:34 IST 2018
Next Month Date = Wed Jul 09 00:00:00 IST 2025
can anyone explain why there is different output in month and years too from current date ??
Noone???
Delete