I am using standalone Spring framework and I want to implement Spring 3.2 @DateTimeFormat(pattern = "dd/mm/yyyy"), but not getting the expected output.
My code snippet is:
@DateTimeFormat(pattern = "dd/mm/yyyy")
private Date dob;
public void amehotd(){
Calendar cal;
cal = Calendar.getInstance ();
cal.set (1999, Calendar.AUGUST, 30);
this.dob = cal.getTime();
System.out.println(dob)
}
Gives following result:
Mon Aug 30 15:08:14 CDT 1999
but I was expecting output like: 30/08/1999
I want to implement without joda time library
Try changing the format to :
@DateTimeFormat(pattern = "dd/MM/yyyy")
MM
is for months , mm
for minutes .
Just look at this documentation:
The most common ISO DateTime Format yyyy-MM-dd'T'hh:mm:ss.SSSZ e.g.
I know it's an old question but I answer because I had the same problem today and I lost 4 hours of work to find the solution. The problem here is spring uses Jackson to serialize and deserialize JSON. @DateTimeFormat
annotation will not do the job, you have to tell Jackson how to serialize the date. You have two solutions: the first one is the simplier and is to use @JsonFormat
annotation in the getter method:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy")
public Date getDob(){
return dob;
}
The second solution is to create a custom serializer for date fields like this:
public class JsonDateSerializer extends JsonSerializer<Date>{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
and then use the annotation in the get method:
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDob(){
return dob;
}
this link explains how to do the serializer
https://dzone.com/articles/how-serialize-javautildate
I faced another problem, I was importing in my JsonDateSerializer class the classes from org.codehaus.jackson
package, but Spring gived me this error:
java.io.FileNotFoundException: class path resource [org/codehaus/jackson/map/JsonSerializer.class] cannot be opened because it does not exist
So I changed all the imports to the package
com.fasterxml.jackson
and it all works fine. I hope it can help someone.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With