The Question and other Answers are using outmoded classes.
Avoid old date-time classes
The old java.util.Date/.Calendar, SimpleDateFormat, and such bundled with the earliest versions of Java have proven to be poorly designed, confusing, and troublesome. Avoid them.
java.time
The java.time framework is built into Java 8 and later. Backports available for Java 6 & 7 and Android.
These new classes are a vast improvement over the old date-time classes. Search Stack Overflow for more discussions and examples.
For date-only values with no time-of-day, use the LocalDate class.
Specify a Locale for the human language to interpret the name-of-month. If omitted the JVM’s current default Locale is implicitly applied. Better to specify explicitly the desired/expected Locale. For example, Locale.US or Locale.ENGLISH or new Locale( "en" , "IN" ), whatever is appropriate to your incoming data.
String input = "25 Mar 2016";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd MMM yyyy" );
formatter = formatter.withLocale( Locale.ENGLISH ); // Specify the language to interpret name-of-month.
LocalDate localDate = LocalDate.parse( input , formatter );
To get a date-time with the first moment of the day, specify a time zone to create a ZonedDateTime.
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" ); // Or "Europe/Paris", "America/Montreal", and such.
ZonedDateTime zdt = localDate.atStartOfDay( zoneId );
Never assume the day starts at the time 00:00:00.0. Anomalies such as Daylight Saving Time (DST) means the day may begin at another time. Let java.time handle such details for you by calling atStartOfDay.
Dateobject then you'll have time also. Why you are converting the String to Date when you want the String in the first place?ISTformat instead ofUTC. Check my answer below.