Python Arrow миллисекунды

Я пытаюсь понять одну простую вещь - как конвертировать arrow.Arrow объект в миллисекундах. Я читал следующую ветку, но мне все еще не ясно, как получить длинное число в миллисекундах.

Я хочу что-то вроде:

def get_millis(time: arrow.Arrow):
     ... some magic goes here ...


print(get_millis(time))     
OUTPUT: 
1518129553227 

Спасибо

5 ответов

Решение

Это не элегантный ответ: из вашего связанного вопроса вы можете получить миллисекунды в виде строки и затем добавить их к метке времени:

import arrow
now = arrow.utcnow()
s = now.timestamp
ms = int(now.format("SSS"))
print(s * 1000 + ms)

Какие отпечатки:

1518131043594

По сути, недвижимость, которую вы ищете,

float_timestamp

Например

now_millisecs = round(arrow.utcnow().float_timestamp, 3)
now_microsecs = round(arrow.utcnow().float_timestamp, 6)

если вам не нравится плавающая точка, вы можете взять ее отсюда с помощью:

str(now_millisecs).replace('.', '')

Я лично оставляю представление с плавающей запятой как для удобства просмотра, так и для простоты вычислений (сравнения и т. Д.).

import arrow


def get_millis(time):
    return time.timestamp * 1000 + time.microsecond / 1000


print(get_millis(arrow.now()))

Вы также можете отформатировать в официальную документацию ms, а затем проанализировать ее до int и обрезать до длины, чем вам нужно.

int(arrow.utcnow().format("x")[:13])

Вот читаемый способ:

      import arrow

def get_millis():
    return int(arrow.utcnow().timestamp() * 1000)
Другие вопросы по тегам