我有一个类似下面的值Mon Jun 18 00:00:00 IST 2012,我想将其转换为18/06/2012
怎么转换这个?
我尝试过这种方法
public String toDate(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date theDate = null;
//String in = date + "/" + month + "/" + year;
try {
theDate = dateFormat.parse(date.toString());
System.out.println("Date parsed = " + dateFormat.format(theDate));
} catch (ParseException e) {
e.printStackTrace();
}
return dateFormat.format(theDate);
}
Run Code Online (Sandbox Code Playgroud)
但它抛出以下异常:
java.text.ParseException: Unparseable date: "Mon Jun 18 00:00:00 IST 2012"
could not read JSON: Can not construct instance of java.util.Date from String
value '2012-07-21 12:11:12': not a valid representation("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
Run Code Online (Sandbox Code Playgroud)
将json请求传递给POJO类中的REST控制器方法.用户应该只输入以下日期时间格式,否则它应该抛出message.why DateSerializer没有调用?
add(@Valid @RequestBody User user)
{
}
Run Code Online (Sandbox Code Playgroud)
JSON:
{
"name":"ssss",
"created_date": "2012-07-21 12:11:12"
}
Run Code Online (Sandbox Code Playgroud)
pojo类变量
@JsonSerialize(using=DateSerializer.class)
@Column
@NotNull(message="Please enter a date")
@Temporal(value=TemporalType.TIMESTAMP)
private Date created_date;
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
logger.info("serialize:"+value);
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
logger.info("DateSerializer formatter:"+formatter.format(value));
jgen.writeString(formatter.format(value));
}
Run Code Online (Sandbox Code Playgroud) 我正在使用休息,并希望序列化和反序列化日期.
创建我的json提供程序后,序列化工作正常,但反序列化仍然无法正常工作.
我的JsonProvider类:
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonProvider extends JacksonJaxbJsonProvider {
public JsonProvider() {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setDateFormat("dd MMM, yyyy hh:mm:ss a";
super.setMapper(mapper);
}
}
Run Code Online (Sandbox Code Playgroud)
输入日期:2014年9月9日上午11:00:00
错误: com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串值'09 Sep,2014 11:00:00 AM'构造java.util.Date的实例:不是有效的表示形式(错误:无法解析日期值'09 Sep,2014 11:00:00 AM':无法解析日期"09 Sep,2014 11:00:00 AM":与任何标准格式不兼容("yyyy-MM-dd'T'HH :mm:ss.SSSZ","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'","EEE,dd MMM yyyy HH:mm:ss zzz","yyyy-MM-dd" ))
我遇到了这个解决方法但是如果我使用它,那么我必须在我的应用程序中注释每个日期字段,我觉得这是一个开销.
我无法弄清楚我做错了什么.
任何帮助,将不胜感激.
谢谢.