繁体   English   中英

在两个Differentnet时区之间传递Date对象,而不在Java中应用时区转换

[英]Passing Date objects between two differnet time zones without applying Time Zone conversions in java

我在两个服务器中有两个程序。 程序A在英国服务器中,而程序B在美国服务器中。

我需要将日期对象从程序A传递到程序B。但是,当我从程序B获取日期对象时,我会收到时区转换。 如何在不应用此时区转换的情况下将日期对象从一台服务器传递到另一台服务器。

注意:我知道可以通过Calender对象完成此操作,如下所示。 但是在我的情况下,我想使用Date对象。

在程序B中:

Date checkInDate  = new Date(cal1.get(Calendar.YEAR) - 1900 , cal1.get(Calendar.MONTH) , cal1.get(Calendar.DATE), cal1.get(Calendar.HOUR_OF_DAY), cal1.get(Calendar.MINUTE), cal1.get(Calendar.SECOND));
Date checkOutDate = new Date(cal2.get(Calendar.YEAR) - 1900 , cal2.get(Calendar.MONTH) , cal2.get(Calendar.DATE), cal2.get(Calendar.HOUR_OF_DAY), cal2.get(Calendar.MINUTE), cal2.get(Calendar.SECOND));

您最好使用Date.getTime()序列化日期,该日期给出自纪元(1970年1月1日,格林尼治标准时间00:00:00)以来的毫秒数。 这是对时间点的完全明确的引用。 您可以通过调用Date(long date)构造函数来重新创建日期。

由于我正在实现Serializable,因此我发现我也可以使用以下方法。

private void writeObject(ObjectOutputStream oos) throws IOException {
    oos.defaultWriteObject();
    if (null != checkInDate)
        oos.writeUTF(new java.text.SimpleDateFormat("yyyy-MMM-dd hh:mm").format(checkInDate));
}

private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { 

    ois.defaultReadObject();
    try {
        setCheckInDate(new java.text.SimpleDateFormat("yyyy-MMM-dd hh:mm").parse(ois.readUTF()));
    } catch (ParseException e) {

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM