我将MongoDB中的现有数据格式化为:
"created_at" : ISODate("2011-11-25T18:17:16Z")
当我尝试使用morphia反序列化为java POJO时,它会将日期作为系统时区应用日期而不是GMT日期。
/**
* The Class AggregationQueryDetails.
*/
public class AggregationQueryResultTriggeredPolicyDetails {
/** The triggered time. */
private Date created_at;
/** The event ids. */
private List<String> event_ids;
/**
* @return the CreatedAt
*/
public Date getCreatedAt() {
return created_at;
}
/**
* @param CreatedAt
* the CreatedAt to set
*/
public void setCreatedAt(Date createdAt) {
this.created_at = createdAt;
}
}
如何避免时区转换?
答案 0 :(得分:0)
java.util.Date内部不存储时区。日期在内部以UTC表示。您可以将日期格式化为您希望的时区。
您最有可能看到的行为是由于您在查看&#34;在调试器中或通过打印它的java.util.Date,它将显示在本地时区。
以下是如何格式化的一个非常基本的示例:
public static String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS zzz";
private static final TimeZone utc = TimeZone.getTimeZone("UTC");
private static final SimpleDateFormat isoFormatter = new SimpleDateFormat(ISO_FORMAT);
static {
isoFormatter.setTimeZone(utc);
}
...
public String toString() {
return "myDate: " + isoFormatter.format(myDate);
}