簡體   English   中英

將MongoDB中的ISODate對象反序列化為Java POJO

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM