[英]Deserializing ISODate objects from MongoDB into Java POJO
我的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;
}
}
如何避免時區轉換?
內部java.util.Date不存儲時區。 日期以UTC內部表示。 由您決定將日期格式化為所需的時區。
您最有可能看到的行為是由於以下事實:當您在調試器中或通過打印“查看” 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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.