Протокол буфера: как определить тип даты? - PullRequest
6 голосов
/ 30 октября 2011

Я пытаюсь написать файл прото с полем Date, который не определен как тип, в буфер протокола.

Я прочитал следующий пост, но не смог найти правильное решение, которое мне подходит: Как лучше всего использовать десятичные дроби и дату и время с буфером протокола? .

Я пытаюсь преобразовать файл прото в Java.

Ответы [ 2 ]

4 голосов
/ 30 октября 2011

Мой ответ в связанном посте относится в основном к protobuf-net;однако, так как вы пришли к этому из Java, я бы порекомендовал: не усложняйте.

Для дат я бы предложил просто использовать время (возможно, миллисекунды) в эпоху (1 января 1970 года традиционно).Для времен, только размер в той же единице (миллисекунды и т. Д.).Для десятичной дроби, возможно, используйте фиксированную точку просто путем масштабирования - так что, возможно, рассматривайте 1.05 как длинную 1050 и утверждайте всегда точно 3dp (следовательно, фиксированную точку).

Это просто и прагматично, и охватывает большинство распространенных сценариев, не делая вещейсложный.

3 голосов
/ 03 ноября 2014

Я не продан по этой идее, но я на самом деле не продан по идее сохранения дат (которые не являются мгновенными во времени) в качестве метки времени, поэтому вот мое предложение.

Преобразуйте вашу дату в удобочитаемое целое число (например, 2014-11-3 становится 20141103) и сохраните это целое значение.Он содержит именно те данные, которые вам нужны, прост в создании и разборе и занимает минимум места.Кроме того, он упорядочен и имеет однозначное сопоставление дат с действительными значениями (допустимо, недопустимые числа возможны, например, 20149999, но их легко обнаружить).Напротив, существует приблизительно 86400 действительных временных меток, которые представляют каждый день.

Примечание: существует обсуждение DBA SE , критикующее этот метод хранения даты, но в этом контексте специализированный тип датысуществует, что, очевидно, здесь не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...