• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 339148
  • Last Modified:

Java Date How to convert String to DATE


Iam trying to Conver a String(mm/dd/yyyy) to Date
Here is code
DateFormat myDateFormat = new SimpleDateFormat(strFormat);
Date myDate = null;
try {
     myDate = myDateFormat.parse(strDate);
} catch (ParseException e) {
     System.out.println("Invalid Date Parser Exception ");
System.out.println("Finished Date Function " + myDate.getDay());

My Problem is iam passing 4/6/2004

but return value month is coming as 2 how to get Day of the Month

1 Solution
LakshmanaRavulaAuthor Commented:

Here is the values
 format = "MM/dd/yyyy"
 date    = 4/6/2004
>>My Problem is iam passing 4/6/2004

Well the format String should then be

strFormat = "m/d/yyyy";


strFormat = "d/m/yyyy";

Sorry, in that case

strFormat = "M/d/yyyy";
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

LakshmanaRavulaAuthor Commented:
I tried this option but still returning 2 as value when i send date as

Here is Debug Staments
inside Date Function : 4/6/2004--m/d/yyyy
Date is  : Tue Jan 06 00:04:00 EST 2004
Finished Date Function  val is = 2
Day Num Returned is : 2
Sunday = 0
mondY = 1

LakshmanaRavulaAuthor Commented:
Still same problem

inside Date Function : 4/26/2004--M/d/yyyy
Date is  : Mon Apr 26 00:00:00 EDT 2004
Finished Date Function  val  is = 1
Day Num Returned is : 1
LakshmanaRavulaAuthor Commented:
Ok in that case how can get Day of the Month
If that's what you want, this is the way to do it

Calendar cal = Calendar.getInstance();
int dayNumber = cal.get(Calendar.DAY_OF_WEEK);
int date = cal.get(Calendar.DATE);
(after setting the cal with your date)

LakshmanaRavulaAuthor Commented:
Thats cool  Can you please tell me how can pass String date to Calendar
You can't. Use the formatting technique and parse as you're already doing
LakshmanaRavulaAuthor Commented:
got it Thank you
System.out.println("Finished Date Function " + myDate.getDate());

answer to your problem
actually the getDay() method will return the order of the day in the week so it returns 2 which is Tuesday . since u have given April 6th which is actually Tuesday. so try


Also when you are parsing the string for  Date using SimpleDateFormat make sure u add this line too,

myDateFormat.setLenient(false); like below

try {
     myDate = myDateFormat.parse(strDate);
} catch (ParseException e) {
     System.out.println("Invalid Date Parser Exception ");

as it would prevent the automatic conversion of the java to add one to the mext date is u have exceeded the Date for the given month.

ie.. if u give 31 and month as 4(April) which really has 30 days only then ur date will be shown as 1 may.

hope this will work.
The comple story from date to string and back is:

            prt("Date is 25 may 2007");
            SimpleDateFormat sim = new SimpleDateFormat("dd/MM/yy");
            java.util.Date datum = new java.util.Date();
                  datum = sim.parse("25/05/05");
            }catch(ParseException e){}      
            prt("Java data object is"+datum);
            prt("datum formatted is then ...");
            SimpleDateFormat dmj= new SimpleDateFormat("dd/MMM/yyyy");
        String thisDate = dmj.format(datum);
        prt("And after all it's this string:"+thisDate);
      public void prt(String s){System.out.println(s);      }
One caveaty of the above posts to be aware of is if the first part of the string mattches the pattern a valid date will be returned.  Below is a DateTimeUtil method I created to specify whether the whole string should be matched or not.  So I can choose if date format pattern "dd/mm/yyyy" should throw an exception when the value "10/10/2007HelloWorld" is passed.  You can not rely on text.length() as a format pattern may have things like mmm which may evaluate to September etc.

       * Get Date from Text using the date format specified
       * @param dateAsText Text date portion
       * @param dateFormat Format the date in text is stored as
       * @param matchWholeString If you want an error to be thrown when a match is found and text exists after the pattern has been matched on the date as text value passed</b>
       * <p>
       * e.g.<br/>
       *       Pattern: dd/mm/yyyy<br/>
       *       Value:   10/10/1977HelloWorld
       * </p>
       * @return Date representation of the text date passed
       * @throws ParseException if text date can not be converted to a date using the format passed
      public static Date getDateFromString(final String dateAsText, final String dateFormat, final boolean matchWholeString) throws ParseException {
        final DateFormat df = new SimpleDateFormat(dateFormat);
            final ParsePosition parsePosition = new ParsePosition(0);
            final Date date = df.parse(dateAsText, parsePosition);
            // Check ParsePosition is to end of string, otherwise throw ParseException error
            if (matchWholeString && parsePosition.getIndex() < dateAsText.length()) {
                  throw new ParseException("Date pattern '" + dateFormat + "' when resolved and applied to date text '"
                              + dateAsText + "' does not match whole of text string passed, only to position " + parsePosition.getIndex(), parsePosition.getIndex());
        return date;
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now