Как преобразовать Ada.Real_TIme.Time в строку? - PullRequest
3 голосов
/ 31 мая 2010

Я хотел бы написать Ada.Real_Time.Time в файле,

Как я могу это сделать?

Спасибо

Ответы [ 4 ]

5 голосов
/ 01 июня 2010

Вы можете использовать Ada.Real_Time.Split для преобразования Ada.Real_Time.Time в (а) количество секунд с начала эпохи, введите Ada.Real_Time.Seconds_Count и (b) дробную часть, тип (частная) Ada.Real_Time.Time_Span; и вы можете использовать Ada.Real_Time.To_Duration для преобразования дробной части в Duration.

Затем вы можете использовать Ada.Real_Time.Seconds_Count'Image и Duration'Image для преобразования в String.

Но для чего вам нужна строка? Если сравнивать, когда что-то происходило за один проход, хорошо, но в определении языка нечего сказать, когда была эпоха; это может быть время последней загрузки компьютера, например.

3 голосов
/ 01 июня 2010

Вызовите функцию Ada.Real_Time.Split (), которая преобразует Time в Seconds_Count и Time_Span. Значение Seconds_Count - это количество секунд, прошедших с начала эпохи, а значение Time_Span - количество (очень маленьких) Time_Units после этой последней секунды. Подробнее см. D.8. Монотонное время (29).

Seconds_Count публично виден в пакете, а Time_Span можно преобразовать в Duration с помощью To_Duration ().

Обратите внимание, что вы можете инвертировать процесс и использовать Time_Of () для восстановления значения времени.

3 голосов
/ 31 мая 2010

Пакет Ada.Real_time не предоставляет метод для прямого формата.

Я бы посоветовал вам взглянуть на Ada.Calendar.Formatting. У вас есть метод Clock, как в Ada.Real_time. Действительно, есть метод Image (параметры: время), который возвращает строку.

Для более подробной информации: Пакет: Ada.Calendar.Formatting

2 голосов
/ 01 июня 2010

Если вам не нужен читаемый текст, а вы хотите просто сохранить его в файле, вы можете попробовать использовать атрибут вывода потока ('Write)

...