Передача объектов Date между двумя разными часовыми поясами без применения часовых поясов в java - PullRequest
0 голосов
/ 19 марта 2012

У меня есть две программы, которые находятся на двух серверах.Программа 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));

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Вам было бы намного лучше сериализовать вашу дату, используя Date.getTime () , который дает количество миллисекунд с начала эпохи (1 января 1970 года, 00:00:00 по Гринвичу). Это совершенно однозначная ссылка на момент времени. Вы можете воссоздать дату, вызвав конструктор Дата (длинная дата) .

0 голосов
/ 19 марта 2012

Поскольку я реализую 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) {

    }
}
...