1

I have a date in the format "12-JAN-15 03.51.22.638000000 AM". I want it to convert to "12-01-15 00:00:00.000" Even though there are hours,minuts and secs etc,i want the output with zeros only.

4 Answers4

2

You want to convert one date format to another. This answer does exactly that. It states

DateFormat originalFormat = new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH);
DateFormat targetFormat = new SimpleDateFormat("yyyyMMdd");
Date date = originalFormat.parse("August 21, 2012");
String formattedDate = targetFormat.format(date);  // 20120821

In your case the original and target format are as follow

Original format: dd-MMM-yy hh.mm.ss.N a Target format: dd-MM-yy hh:mm:ss:S

I am not sure how to replace the time data with 0. Perhaps a string manipulation is the way to go in your case. But if you want more control then you can do something like this.

Calendar cal = Calendar.getInstance();
cal.setTime(date); // this is the date we parsed above
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
formattedDate = targetFormat.format(cal.getTime());

EDIT @ Sufiyan Ghori has provided a more cleaner way to do it.

Community
  • 1
  • 1
Dhir Pratap
  • 1,188
  • 11
  • 14
  • or you could have used , `cal.set(year, month, date, hourOfDay, minute, second);` and set the ms separately – Sufiyan Ghori Feb 04 '15 at 13:27
  • After seeing the update I see that is also a doable approach. But I mentioned about more control to target individual values. – Dhir Pratap Feb 04 '15 at 13:35
1

Using Java 8,

DateTimeFormatter formatter = DateTimeFormatter
            .ofPattern("MM-dd-yy:hh:mm:ss:nn"); // n = nano-of-second

LocalDateTime today = LocalDateTime.of(LocalDate.of(2015, 1, 15),
            LocalTime.of(00, 00, 00, 00));

System.out.println(today.format(formatter));

Output

01-15-15:12:00:00:00

Explanation,

LocalDateTime.of(LocalDate.of(int Year, int Month, int Day), 
                LocalTime.of(int Hour, int Minutes, int Seconds, int nanoOfSeconds));
Sufiyan Ghori
  • 18,164
  • 14
  • 82
  • 110
0
        String dateInString = "12-JAN-15 10.17.07.107000000 AM";
        dateInString = dateInString.substring(0, 9);
        Date date = null;
        try {
            date = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH).parse(dateInString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        String newFormat = new SimpleDateFormat("dd-MM-yy 00:00:00.000").format(date);
        System.out.println(newFormat);
0
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010

You can follow to this javadoc, listing all available format patterns:

G   Era designator       Text               AD
y   Year                 Year               1996; 96
M   Month in year        Month              July; Jul; 07
w   Week in year         Number             27
W   Week in month        Number             2
D   Day in year          Number             189
d   Day in month         Number             10
F   Day of week in month Number             2
E   Day in week          Text               Tuesday; Tue
u   Day number of week   Number             1
a   Am/pm marker         Text               PM
H   Hour in day (0-23)   Number             0
k   Hour in day (1-24)   Number             24
K   Hour in am/pm (0-11) Number             0
h   Hour in am/pm (1-12) Number             12
m   Minute in hour       Number             30
s   Second in minute     Number             55
S   Millisecond          Number             978
z   Time zone            General time zone  Pacific Standard Time; PST; GMT-     08:00
Z   Time zone            RFC 822 time zone  -0800
X   Time zone            ISO 8601 time zone -08; -0800; -08:00

You can refer to this answer for detailed explanation.

Community
  • 1
  • 1
shivamDev31
  • 469
  • 1
  • 8
  • 23