DateFormat not giving date in the desired format - java

I want to get the current date in the following format
yyyy_mm_dd
Am Using the below code
DateFormat date = new SimpleDateFormat("yyyy_mm_dd");
Date datetoday = new Date();
System.out.println(date.format(datetoday));
But its giving the result in this manner - 2013_56_25
However, it should give the result like 2013_03_25
Infact, the mm value varies every time I run it.
My system's date is of the format - 3/25/2013. (Idk if it has some relation with this)
What is the possible problem with this ?

Use upper case MM, lower case mm is for minutes.
DateFormat date = new SimpleDateFormat("yyyy_MM_dd");

Month is M, not m (which is minute)

Use MM instead of mm; lower case is for mintues; Uppercase for Months

You will have to use MM and not mm. Please refer the table from the image below

I got Different Result after parse the java.util.Date to java.sql.Date
String date="2012-05-02";
SimpleDateFormat df=new SimpleDateFormat("yyyy-mm-dd");
i got as a result is:2012-01-01
means 1 Day is less than actually required.

Related

SimpleDateFormat.parse returns invalid date

I am sending a valid date ("1705") and getting different parsed date ("1701")
any help on what to fix?
the print in the middle shows the valid date.
SimpleDateFormat sdf = new SimpleDateFormat("YYMM");
System.out.println(exYear+exMonth);
Date ccDate = sdf.parse(exYear+exMonth);
y for year has to be in small case
SimpleDateFormat sdf = new SimpleDateFormat("yyMM");
Refer complete notation explanation in javadoc

Oneliner to get a string representation of Day of week, day of month and time according to default locale

I'm using a combination of DateFormat and SimpleDateFormat to achive following string from a Date object:
fre 20 22:48
This snippet produces the outcome above:
DateFormat localizedTimeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault());
String str = new SimpleDateFormat("EE d", Locale.getDefault()).format(date) + " " + localizedTimeFormatter.format(date);
The outcome is exactly as I want, but I think there are improvements that could be done. I would like to use only the SimpleDateFormat to achieve this and getting shortname for day in week and day of month are not the problem. The problem is getting time in only hours and minutes according to locale, or more correctly, 12 or 24 hour format. I've checked out the documentation on the SimpleDateFormat Javadoc SimpleDateFormat
but as I can see there are no way of getting a time(hhmm) in 12 or 24hour format just by setting a format string to the SimpleDateFormat? Are there any way to achieve this by only using SimpleDateFormat as a oneliner, or do I have to do it the way I have done already, or are there a completely different way of solving this little issue?
How about
SimpleDateFormat sdf = new SimpleDateFormat("EE d HH:mm", Locale.getDefault());
or
SimpleDateFormat sdf = new SimpleDateFormat("EE d hh:mm", Locale.getDefault());
Your method is on the right track.
However, I didn't need to use the DateFormatter.
I got your expected result in this line itself.
String str = new SimpleDateFormat("EEE, d, k:m", Locale.getDefault()).format(Calendar.getInstance().getTime());
Output is:
Mon, 30, 19:5
The pattern you use in the first argument to SimpleDateFormat is the key here I think.
The meaning of the individual alphabets and their combination is already mentioned in the link you gave.
Hope this helps.

Converting string into date type

I have used the Calendar class to get the current Date. Now I want to convert that date to Date format so that it can be stored in database with format "yyyy.mm.dd". I tried to convert this using SimpleDateFormat class
String dateString = dateText.getText();
SimpleDateFormat dateFormat = new SimpleDateFormat(" yyyy.mm.dd ");
Date convertedDate = dateFormat.parse(dateString);
but I couldn't convert into Date type.
Try to remove spaces from the format string
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.mm.dd");
Also if your input date has invalid format you might get a parse exception. Better if you put it into try/catch block.
Notice, that m stands for minute in hour but M for month of year. Make sure you put a valid format pattern.
You havent stated what the error is but its unlikely that you want to use a minute field to parse the month. Use uppercase M:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
get rid of the whitespaces in your pattern

Can not convert a string to proper date format

In my HTML part I have text box where the date is entered as: 10.09.2013 (dd.mm.yyyy)
What I'm doing in my servlet is:
SimpleDateFormat formatter = new SimpleDateFormat("dd.mm.yyyy");
String dateInString = invoiceData.getString("date");
Date date = formatter.parse(dateInString);
System.out.println(date);
The system prints: Thu Jan 10 00:09:00 EET 2013 and inside of the oracle database it's inserted as 10-SEP-2013
Please help me! I'm dealing with it for about 2 hours and I really can not find a way to convert it and insert it correctly in my database. I know that I'm missing something super small, but I'm unable to spot it.
I'm using Jboss 7.1 server.
new SimpleDateFormat("dd.MM.yyyy");
instead of
new SimpleDateFormat("dd.mm.yyyy");
mm stands for Minutes. MM stands for Month
Take a look date format
mm is used for minutes and MM is used for Month
SO you need to change:
new SimpleDateFormat("dd.MM.yyyy");
mm stands for minutes.
You need to use MM in your pattern to get the month.
mm for Minutes and MM for Month. Change the format to dd.MM.yyyy get the correct date.
Change your code like below:
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
String dateInString = invoiceData.getString("date");
Date date = formatter.parse(dateInString);
System.out.println(date);
use following format
new SimpleDateFormat("dd.MM.yyyy");

Getting formatted date in date format rather than String

I'm running the program written below, but instead of printing in mm/dd/yyyy hh:mm format it prints in the normal date format(ie. Day Date and time)
SimpleDateFormat sdf = new SimpleDateFormat("mm/dd/yyyy hh:mm");
Date date = sdf.parse(sdf.format(Calendar.getInstance().getTime()));
The reason i'm doing this is because the existing method accepts parameters in Date format, so i need to send the above mentioned date object to it.
Please point out the mistake or suggest some other alternative.
Thanks
Date objects don't have a format. The Date class is a wrapper around a single long, the number of milliseconds since the epoch. You can't "format" a Date, only a String. Pass around a Date/Calendar internally, and format it whenever you need to display it, log it, or otherwise return it to the user.
Change the format to MM/dd/yyyy. Month is denoted by capital M.
Check below URL for valid formats
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Your formatter works quite fine (apart from the mm vs. MM bug). You get a formatted string from the date and then create a copy from your date by parsing the formatted string:
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
Date now = Calendar.getInstance().getTime();
String formattedNow = sdf.format(now); // == "09/24/2013 01:59"
Date now2 = sdf.parse(formattedNow); // == now

Categories

Resources