Сериализация даты в Java

os.system, похоже, всегда вызывает sh, которая не распознает параметры s и n для чтения. Однако команда чтения может быть передана в bash:

 os.system("""bash -c 'read -s -n 1 -p "Press any key to continue..."'""")
7
задан Aaron 22 September 2008 в 13:34
поделиться

11 ответов

Joda-разовый

Класс Даты имеет неуклюжий API. Лучшая реализация является Joda-разовой.

ISO 8601

Joda-разовый также позволяет Вам преобразовывать свою дату в стандартном формате ISO 8601 (yyyy-mm-ddTHH:MM:SS.SSS). Используя этот стандарт, когда движущиеся даты от сервера до его клиента имеет преимущество для включения полной даты в читаемый формат. При использовании, например, JAXB представлением XML даты является также этот стандарт ISO. (см. класс XMLGregorianCalendar),

8
ответ дан 6 December 2019 в 08:17
поделиться

Сериализация длинного, возвращенного Date.getTime (), как ранее предложено, будет работать. Необходимо однако отметить, что, если сервер находится в другом часовом поясе, чем клиент, дата, Вы восстановите, с другой стороны будет отличаться. Если Вы хотите, хотят восстановить точно тот же самый объект даты, который что также необходимо отправить часовому поясу (TimeZone.getID ()) и использовать его для восстановления даты с другой стороны.

6
ответ дан 6 December 2019 в 08:17
поделиться

java.sql. Дата расширяет java.util. Дата

Просто используйте getTime () для получения длинного значения от него. Это может быть сериализировано и новый java.sql. Дата (длинный) или новый java.util. Дата (долго) создается из него в другом конце.

2
ответ дан 6 December 2019 в 08:17
поделиться

Для ответа на первую часть вопроса я предложил бы строку в формате ISO 8601 (это - стандарт для кодирования дат).

Для второй части я не уверен, почему Вам был бы нужен прокси-класс? Или почему необходимо было бы расширить класс даты для поддержки этого. например, разве Ваш веб-сервис не знал бы, что определенное поле является датой, и преобразование из даты, чтобы представить в виде строки и поддержать себя? Мне было бы нужно немного больше информации.

3
ответ дан 6 December 2019 в 08:17
поделиться

один протест с java.sql. Дата, которая укусила меня недавно, - то, что это не хранит части времени (часы, минуты, секунды, и т.д.) просто часть даты. если Вы хотите полную метку времени, необходимо использовать java.util. Дата или java.sql. Метка времени

1
ответ дан 6 December 2019 в 08:17
поделиться

Вам не нужен конструктор по умолчанию (пустой) для сериализирования/десериализовывания даты (любой java.sql. Дата или java.util. Дата). Во время десериализации конструктора не вызывают, но атрибуты объектного набора непосредственно к значениям от сериализированных данных, и можно использовать объект, как это - так как это десериализовало.

0
ответ дан 6 December 2019 в 08:17
поделиться

Я изучил реализацию java.sql. Дата и поскольку я вижу его java.sql. Дата является сериализуемой как расширение java.util. Дата.

1
ответ дан 6 December 2019 в 08:17
поделиться

Вы могли использовать кодер и декодировать, чтобы сериализировать и десериализовать Ваши объекты.

Вот пример, который сериализирует Прямоугольный класс SWT:

XMLEncoder encoder = new XMLEncoder(new FileOutputStream(file));
encoder.setPersistenceDelegate(
    Rectangle.class, 
    new DefaultPersistenceDelegate(new String[]{"x", "y", "width", "height"}));
encoder.writeObject(groups);
encoder.close();
0
ответ дан 6 December 2019 в 08:17
поделиться

Во-первых при использовании веб-сервисов это означает, что Вы сериализируете к XML и не Вашей регулярной сериализации Java (но некоторая другая библиотека для маршалинга и немаршалинга). Таким образом, вопрос испытывает недостаток в некоторой информации.

Во-вторых, если Вы управляете своим расширением попытки InputStream & OutputStream ObjectOutputStream и ObjectInputStream и переопределяете replaceObject () и resolveObject (), и затем можно реализовать сериализацию для java.sql. Дата.

0
ответ дан 6 December 2019 в 08:17
поделиться

java.sql. Дата уже реализует сериализуемый так никакая потребность реализовать его :-)

Что касается Вашего основного вопроса, я глубоко люблю JAXB, поскольку я могу повернуть почти любой XML в объект, таким образом, это могло бы стоить Вашего, в то время как изучить его.

0
ответ дан 6 December 2019 в 08:17
поделиться

Хм... Не может думать ни о какой причине, почему любой сериализированный экземпляр объекта (сериализированный с помощью механизма Java по умолчанию) должен десериализовать себя как экземпляр другого класса, поскольку информацией о классе должна быть свойственная часть сериализированных данных.

Таким образом, это - любой проблема Вашего (de-), платформа сериализации или платформа принимают любой "подобный дате" объект на "передающем конце" (Календарь, java.util. Дата и т.д. - таким образом java.sql. Дата также, поскольку это расширяет java.util. Дата), "сериализирует" его к Строке в некотором общем формате даты (таким образом, информация о типе потеряна), и "десериализовывает" его назад к Календарному объекту на принимающем конце.

Таким образом, я думаю самый простой способ добраться до java.sql. Дата должна сделать a

java.sql.Date date = new java.sql.Date(calendar.getTimeInMillis);

где Вам нужен java.sql. Дата, но возвращает GregorianCalendar от "десериализации".

0
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: