Я полагаю, что вы, возможно, ошибаетесь - значение временной метки, которую ожидает Receiver.send()
, составляет микросекунды , а не миллисекунды, как в Calendar
. Это означает, что вы находитесь в 1000 раз, что может показаться «постоянно меняющимся значением».
Я не знаю, хотите ли вы просто уменьшить разрешение ваших временных меток или использовать микросекунды. Это будет зависеть от точного характера вашего приложения, данных, которые вы получаете в своих сообщениях, и того, что вы хотите с ними делать.
<ч />
РЕДАКТИРОВАТЬ:
Это основано на предположении, что вы получаете данные, а не что вы заполняете значение метки времени.
Если вам нужно сохранить разрешение, вот несколько вариантов:
- Используйте
java.sql.Timestamp
подкласс Date
. Это может хранить разрешение вплоть до наносекунд (больше, чем вам нужно). Однако все стандартные утилиты дат в библиотеке имеют странное поведение, и пространство имен, возможно, далеко не идеальное.
- Напишите свой собственный JRE / JDK / JVM.
Calendar
и Date
являются частью стандартной библиотеки. Если вы хотите распространять свой код, вы должны ожидать, что люди будут использовать вашу версию стандартной библиотеки. Это нежелательно по большому количеству причин.
- Найти / написать собственный класс типа отметки времени. Вероятно, есть аудио библиотеки, которые имеют соответствующую реализацию. Если вам действительно нужно написать свой собственный, я бы, вероятно, взял код из Joda Time и просто изменил бы разрешение - хотя это все равно было бы неплохой работой.
- Просто оставьте значение в качестве примитива. В конце концов, вряд ли вам нужно что-то большее, чем числовые значения (не то, что вам нужно переводить значения года-месяца-дня). Хотя для этого было бы хорошо иметь безопасность типов, особенно в свете различий в разрешении. Если это не соответствует вашему варианту использования, извините.