вы можете конвертировать Unix метку времени, что у вас есть (в секундах) в миллисекунды, а затем добавить свои миллисекунды к нему.
чтобы преобразовать секунды в миллисекунды, просто умножьте на 1000 (или добавьте "000", в зависимости от того, что удобнее).
чтобы добавить свой собственный счетчик миллисекунд, вы можете просто использовать поддержку bash для арифметических выражений. Чтобы получить текущее количество миллисекунд, прошедших через секунду, вы можете использовать дату +%N
спецификатор формата, который выводит наносекунды мимо второй, и разделить на 10^6, чтобы получить миллисекунды.
собираем это вместе, если у вас уже есть скрипт или функция get_seconds
, который выводит количество секунд с начала эпохи, мы получим:
echo $(( ($(get_seconds) * 1000) + ($(date +%N) / 1000000) ))
^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
| | |_ convert ns past sec to ms
| |
| |_ convert seconds to ms
|
|_ bash arithmetric expression
обратите внимание, что это сочетает в себе два совершенно отдельные метки времени, так что в то время как вы получаете увеличенное количество цифр (точность), вы не получите какой-либо повышенной точности в отчетное время. На самом деле, если (скажем) что-то случится как раз на рубеже второй, первой части может относиться ко второму х, а вторая часть может касаться второе х+1, что может привести полученное значение до почти одну секунду. (Вы должны были получить X. 998 и вместо этого получили X. 002 из-за второй границы.)
честно говоря, я не понимаю, как это может быть более полезным, чем, скажем, просто добавление " 500 " к секундам, чтобы получить миллисекунды в половине секунды (вы все равно будете отключены на некоторую сумму, но вы уменьшите максимальную ошибку примерно наполовину).