我有两个程序在两个服务器中。程序A在英国服务器上,程序B在美国服务器上。
我需要将一个日期对象从程序a传递到程序B。但当我从程序B获得日期对象时,我会收到时区转换。如何在不应用时区转换的情况下将日期对象从一台服务器传递到另一台服务器。
注意:我知道这件事可以通过以下日历对象来完成。但是在我的情况下,我想使用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()序列化日期,它会给出自epoch(1970年1月1日00:00:00 GMT)以来的毫秒数。这是对某个时间点的完全明确的引用。您可以通过调用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) {
}
}